lib/rouge/lexers/ruby.rb in rouge-0.3.4 vs lib/rouge/lexers/ruby.rb in rouge-0.3.5

- old
+ new

@@ -25,22 +25,23 @@ # special symbols rule %r(:(?:\*\*|[-+]@|[/\%&\|^`~]|\[\]=?|<<|>>|<=?>|<=?|===?)), 'Literal.String.Symbol' rule /:'(\\\\|\\'|[^'])*'/, 'Literal.String.Symbol' + rule /\b[a-z_]\w*?:\s+/, 'Literal.String.Symbol' rule /'(\\\\|\\'|[^'])*'/, 'Literal.String.Single' rule /:"/, 'Literal.String.Symbol', :simple_sym rule /"/, 'Literal.String.Double', :simple_string rule /(?<!\.)`/, 'Literal.String.Backtick', :simple_backtick # %-style delimiters # %(abc), %[abc], %<abc>, %.abc., %r.abc., etc delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' } - rule /%([rqswQWx])?([^\w\s])/ do |m| + rule /%([rqswQWxiI])?([^\w\s])/ do |m| open = Regexp.escape(m[2]) close = Regexp.escape(delimiter_map[m[2]] || m[2]) - interp = /[rQWx]/ === m[1] + interp = /[rQWxI]/ === m[1] toktype = 'Literal.String.Other' debug { " open: #{open.inspect}" } debug { " close: #{close.inspect}" } @@ -152,12 +153,12 @@ group 'Keyword' group 'Text' group 'Name.Namespace' end - rule /def\b/, 'Keyword', :funcname - rule /class\b/, 'Keyword', :classname + rule /def\s+/, 'Keyword', :funcname + rule /class\s+/, 'Keyword', :classname rule /(?:#{builtins_q.join('|')})\?/, 'Name.Builtin', :expr_start rule /(?:#{builtins_b.join('|')})!/, 'Name.Builtin', :expr_start rule /(?<!\.)(?:#{builtins_g.join('|')})\b/, 'Name.Builtin', :method_call @@ -329,10 +330,10 @@ push :slash_regex end # special case for using a single space. Ruby demands that # these be in a single line, otherwise it would make no sense. - rule /(\s*)(%[rqswQWx]? \S* )/ do + rule /(\s*)(%[rqswQWxiI]? \S* )/ do group 'Text' group 'Literal.String.Other' pop! end