diff --git a/lib/rouge/lexers/lua.rb b/lib/rouge/lexers/lua.rb index 6e1887b084..6defd8f0a3 100644 --- a/lib/rouge/lexers/lua.rb +++ b/lib/rouge/lexers/lua.rb @@ -105,7 +105,26 @@ def builtins rule %r/\)/, Punctuation, :pop! rule %r/[(,]/, Punctuation rule %r/\s+/, Text - rule %r/"/, Str::Regex, :regex + rule %r/'/, Str::Regex, :regex_sq + rule %r/"/, Str::Regex, :regex_dq + end + + state :regex_sq do + rule %r(') do + token Str::Regex + goto :regex_end + end + + mixin :regex + end + + state :regex_dq do + rule %r(") do + token Str::Regex + goto :regex_end + end + + mixin :regex end state :regex do @@ -151,13 +170,15 @@ def builtins end state :sqs do + rule %r(\\'), Str::Escape rule %r('), Str::Single, :pop! - rule %r([^']+), Str::Single + rule %r([^'\\]+), Str::Single end state :dqs do + rule %r(\\"), Str::Escape rule %r("), Str::Double, :pop! - rule %r([^"]+), Str::Double + rule %r([^"\\]+), Str::Double end end end diff --git a/spec/visual/samples/lua b/spec/visual/samples/lua index 5c471e0b30..a4841c195b 100644 --- a/spec/visual/samples/lua +++ b/spec/visual/samples/lua @@ -258,6 +258,8 @@ end acc = Account.create(1000) acc:withdraw(100) +-- gsub examples if url = url:gsub("^['\"]", ""):gsub("['\"]$", "") + local pattern = attr_name .. '=[\'"]' .. attr_value:gsub('([%.%+%-%*%?%[%]%^%$%(%)%%])', '%%%1') .. '[\'"]' end