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