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 }