lib/rouge/lexers/haskell.rb in rouge-3.1.1 vs lib/rouge/lexers/haskell.rb in rouge-3.2.0

- old
+ new

@@ -79,10 +79,19 @@ rule /'/, Str::Char, :character rule /"/, Str, :string rule /\[\s*\]/, Keyword::Type rule /\(\s*\)/, Name::Builtin + + # Quasiquotations + rule /(\[)([_a-z][\w']*)(\|)/ do |m| + token Operator, m[1] + token Name, m[2] + token Operator, m[3] + push :quasiquotation + end + rule /[\[\](),;`{}]/, Punctuation end state :import do rule /\s+/, Text @@ -158,9 +167,15 @@ end state :character_end do rule /'/, Str::Char, :pop! rule /./, Error, :pop! + end + + state :quasiquotation do + rule /\|\]/, Operator, :pop! + rule /[^\|]+/m, Text + rule /\|/, Text end state :string do rule /"/, Str, :pop! rule /\\/, Str::Escape, :escape