mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/irb] Colorize __END__
as keyword
https://github.com/ruby/irb/commit/9b84018311
This commit is contained in:
parent
ecfa8dcdba
commit
79af8ce6d7
2 changed files with 5 additions and 1 deletions
|
@ -64,6 +64,7 @@ module IRB # :nodoc:
|
||||||
on_alias_error: [[RED, REVERSE], ALL],
|
on_alias_error: [[RED, REVERSE], ALL],
|
||||||
on_class_name_error:[[RED, REVERSE], ALL],
|
on_class_name_error:[[RED, REVERSE], ALL],
|
||||||
on_param_error: [[RED, REVERSE], ALL],
|
on_param_error: [[RED, REVERSE], ALL],
|
||||||
|
on___end__: [[GREEN], ALL],
|
||||||
}
|
}
|
||||||
rescue NameError
|
rescue NameError
|
||||||
# Give up highlighting Ripper-incompatible older Ruby
|
# Give up highlighting Ripper-incompatible older Ruby
|
||||||
|
@ -120,6 +121,7 @@ module IRB # :nodoc:
|
||||||
symbol_state = SymbolState.new
|
symbol_state = SymbolState.new
|
||||||
colored = +''
|
colored = +''
|
||||||
length = 0
|
length = 0
|
||||||
|
end_seen = false
|
||||||
|
|
||||||
scan(code, allow_last_error: !complete) do |token, str, expr|
|
scan(code, allow_last_error: !complete) do |token, str, expr|
|
||||||
# IRB::ColorPrinter skips colorizing fragments with any invalid token
|
# IRB::ColorPrinter skips colorizing fragments with any invalid token
|
||||||
|
@ -138,10 +140,11 @@ module IRB # :nodoc:
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
length += str.bytesize
|
length += str.bytesize
|
||||||
|
end_seen = true if token == :on___end__
|
||||||
end
|
end
|
||||||
|
|
||||||
# give up colorizing incomplete Ripper tokens
|
# give up colorizing incomplete Ripper tokens
|
||||||
if length != code.bytesize
|
unless end_seen or length == code.bytesize
|
||||||
return Reline::Unicode.escape_for_print(code)
|
return Reline::Unicode.escape_for_print(code)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,7 @@ module TestIRB
|
||||||
"\t" => "\t", # not ^I
|
"\t" => "\t", # not ^I
|
||||||
"foo(*%W(bar))" => "foo(*#{RED}#{BOLD}%W(#{CLEAR}#{RED}bar#{CLEAR}#{RED}#{BOLD})#{CLEAR})",
|
"foo(*%W(bar))" => "foo(*#{RED}#{BOLD}%W(#{CLEAR}#{RED}bar#{CLEAR}#{RED}#{BOLD})#{CLEAR})",
|
||||||
"$stdout" => "#{GREEN}#{BOLD}$stdout#{CLEAR}",
|
"$stdout" => "#{GREEN}#{BOLD}$stdout#{CLEAR}",
|
||||||
|
"__END__" => "#{GREEN}__END__#{CLEAR}",
|
||||||
}
|
}
|
||||||
|
|
||||||
# specific to Ruby 2.7+
|
# specific to Ruby 2.7+
|
||||||
|
|
Loading…
Reference in a new issue