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