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