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_class_name_error:[[RED, REVERSE], ALL],
|
||||
on_param_error: [[RED, REVERSE], ALL],
|
||||
on___end__: [[GREEN], ALL],
|
||||
}
|
||||
rescue NameError
|
||||
# Give up highlighting Ripper-incompatible older Ruby
|
||||
|
@ -120,6 +121,7 @@ module IRB # :nodoc:
|
|||
symbol_state = SymbolState.new
|
||||
colored = +''
|
||||
length = 0
|
||||
end_seen = false
|
||||
|
||||
scan(code, allow_last_error: !complete) do |token, str, expr|
|
||||
# IRB::ColorPrinter skips colorizing fragments with any invalid token
|
||||
|
@ -138,10 +140,11 @@ module IRB # :nodoc:
|
|||
end
|
||||
end
|
||||
length += str.bytesize
|
||||
end_seen = true if token == :on___end__
|
||||
end
|
||||
|
||||
# give up colorizing incomplete Ripper tokens
|
||||
if length != code.bytesize
|
||||
unless end_seen or length == code.bytesize
|
||||
return Reline::Unicode.escape_for_print(code)
|
||||
end
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@ module TestIRB
|
|||
"\t" => "\t", # not ^I
|
||||
"foo(*%W(bar))" => "foo(*#{RED}#{BOLD}%W(#{CLEAR}#{RED}bar#{CLEAR}#{RED}#{BOLD})#{CLEAR})",
|
||||
"$stdout" => "#{GREEN}#{BOLD}$stdout#{CLEAR}",
|
||||
"__END__" => "#{GREEN}__END__#{CLEAR}",
|
||||
}
|
||||
|
||||
# specific to Ruby 2.7+
|
||||
|
|
Loading…
Reference in a new issue