Allow language-xxx class detection on pre tags in ReverseMarkdown (#5299)
* Allow language-xxx class detection on pre tags in ReverseMarkdown Solves thepracticaldev/dev.to#5298 * Remove comment
This commit is contained in:
parent
13363dd329
commit
ba230ecab6
2 changed files with 35 additions and 1 deletions
|
|
@ -25,13 +25,19 @@ module ReverseMarkdown
|
|||
|
||||
def language(node)
|
||||
lang = language_from_highlight_class(node)
|
||||
lang || language_from_confluence_class(node)
|
||||
lang ||= language_from_language_class(node)
|
||||
lang ||= language_from_confluence_class(node)
|
||||
lang
|
||||
end
|
||||
|
||||
def language_from_highlight_class(node)
|
||||
node.parent["class"].to_s[/highlight-([a-zA-Z0-9]+)/, 1]
|
||||
end
|
||||
|
||||
def language_from_language_class(node)
|
||||
node["class"].to_s[/language-([a-zA-Z0-9]+)/, 1]
|
||||
end
|
||||
|
||||
def language_from_confluence_class(node)
|
||||
node["class"].to_s[/brush:\s?(:?.*);/, 1]
|
||||
end
|
||||
|
|
|
|||
28
spec/lib/reverse_markdown/converters/custom_pre_spec.rb
Normal file
28
spec/lib/reverse_markdown/converters/custom_pre_spec.rb
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
require "rails_helper"
|
||||
|
||||
RSpec.describe ReverseMarkdown::Converters::CustomPre, type: :lib do
|
||||
def create_custom_pre
|
||||
ReverseMarkdown.config.github_flavored = true
|
||||
described_class.new
|
||||
end
|
||||
|
||||
describe "#convert" do
|
||||
it "detects languages from language-prefixed classnames" do
|
||||
node = Nokogiri::HTML('<pre class="language-js"></pre>').search("pre")[0]
|
||||
result = create_custom_pre.convert(node)
|
||||
expect(result.split[0]).to eq("```js")
|
||||
end
|
||||
|
||||
it "detects languages from highlight-prefixed classnames on the parent element" do
|
||||
node = Nokogiri::HTML('<div class="highlight-ruby"><pre></pre></div>').search("pre")[0]
|
||||
result = create_custom_pre.convert(node)
|
||||
expect(result.split[0]).to eq("```ruby")
|
||||
end
|
||||
|
||||
it "detects languages from confluence-style classnames" do
|
||||
node = Nokogiri::HTML('<pre class="brush:html;"></pre>').search("pre")[0]
|
||||
result = create_custom_pre.convert(node)
|
||||
expect(result.split[0]).to eq("```html")
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Reference in a new issue