lib/rouge/lexers/markdown.rb in rouge-3.16.0 vs lib/rouge/lexers/markdown.rb in rouge-3.17.0
- old
+ new
@@ -30,11 +30,11 @@
rule %r/^[\S ]+\n(?:===*)\n/, Generic::Subheading
rule %r/^#(?=[^#]).*?$/, Generic::Heading
rule %r/^##*.*?$/, Generic::Subheading
- rule %r/^([ \t]*)(```|~~~)([^\n]*\n)((.*?)(\2))?/m do |m|
+ rule %r/^([ \t]*)(`{3,}|~{3,})([^\n]*\n)((.*?)(\n\1)(\2))?/m do |m|
name = m[3].strip
sublexer =
begin
Lexer.find_fancy(name.empty? ? "guess" : name, m[5], @options)
rescue Guesser::Ambiguous => e
@@ -49,12 +49,14 @@
token Name::Label, m[3]
if m[5]
delegate sublexer, m[5]
end
- if m[6]
- token Punctuation, m[6]
+ token Text, m[6]
+
+ if m[7]
+ token Punctuation, m[7]
else
push do
rule %r/^([ \t]*)(#{m[2]})/ do |mb|
pop!
token Text, mb[1]
@@ -98,11 +100,11 @@
push :title
push :url
end
# links and images
- rule %r/(!?\[)(#{edot}*?)(\])/ do
+ rule %r/(!?\[)(#{edot}*?)(\])(?=[\[(])/ do
groups Punctuation, Name::Variable, Punctuation
push :link
end
rule %r/[*][*]#{edot}*?[*][*]/, Generic::Strong
@@ -113,16 +115,18 @@
# Automatic links
rule %r/<.*?@.+[.].+>/, Name::Variable
rule %r[<(https?|mailto|ftp)://#{edot}*?>], Name::Variable
-
rule %r/[^\\`\[*\n&<]+/, Text
# inline html
rule(/&\S*;/) { delegate html }
rule(/<#{edot}*?>/) { delegate html }
rule %r/[&<]/, Text
+
+ # An opening square bracket that is not a link
+ rule %r/\[/, Text
rule %r/\n/, Text
end
state :link do