lib/rouge/lexers/tulip.rb in rouge-2.0.5 vs lib/rouge/lexers/tulip.rb in rouge-2.0.6
- old
+ new
@@ -26,26 +26,37 @@
mixin :comments_and_whitespace
rule /@#{id}/, Keyword
- rule /[>,!\[\]:{}()=;\/]/, Punctuation
-
rule /(\\#{id})([{])/ do
- groups Name::Variable, Str
+ groups Name::Function, Str
push :nested_string
end
+ rule /([+]#{id})([{])/ do
+ groups Name::Decorator, Str
+ push :nested_string
+ end
+
rule /\\#{id}/, Name::Function
+ rule /[+]#{id}/, Name::Decorator
+ rule /"[{]/, Str, :dqi
rule /"/, Str, :dq
rule /'{/, Str, :nested_string
+ rule /'#{id}/, Str
rule /[.]#{id}/, Name::Tag
- rule /[$]#{id}/, Name::Variable
+ rule /[$]#{id}?/, Name::Variable
+ rule /-#{id}:?/, Name::Label
+ rule /%#{id}/, Name::Function
+ rule /`#{id}/, Operator::Word
+ rule /[?~%._>,!\[\]:{}()=;\/-]/, Punctuation
+
rule /[0-9]+([.][0-9]+)?/, Num
rule /#{id}/, Name
rule /</, Comment::Preproc, :angle_brackets
@@ -53,9 +64,28 @@
state :dq do
rule /[^\\"]+/, Str
rule /"/, Str, :pop!
rule /\\./, Str::Escape
+ end
+
+ state :dqi do
+ rule /[$][(]/, Str::Interpol, :interp_root
+ rule /[{]/, Str, :dqi
+ rule /[}]/, Str, :pop!
+ rule /[^{}$]+/, Str
+ rule /./, Str
+ end
+
+ state :interp_root do
+ rule /[)]/, Str::Interpol, :pop!
+ mixin :interp
+ end
+
+ state :interp do
+ rule /[(]/, Punctuation, :interp
+ rule /[)]/, Punctuation, :pop!
+ mixin :root
end
state :nested_string do
rule /\\./, Str::Escape
rule(/{/) { token Str; push :nested_string }