From 3f0b4665df786990799c4cbac4de3a3cafb5e6bc Mon Sep 17 00:00:00 2001 From: Nobuhiro IMAI Date: Wed, 13 Jan 2021 23:36:10 +0900 Subject: [PATCH] [ruby/irb] handle `__ENCODING__` as a keyword as well https://github.com/ruby/irb/commit/a6a33d908f --- lib/irb/color.rb | 2 +- test/irb/test_color.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/irb/color.rb b/lib/irb/color.rb index 81626993ca..a054bb20f8 100644 --- a/lib/irb/color.rb +++ b/lib/irb/color.rb @@ -17,7 +17,7 @@ module IRB # :nodoc: CYAN = 36 TOKEN_KEYWORDS = { - on_kw: ['nil', 'self', 'true', 'false', '__FILE__', '__LINE__'], + on_kw: ['nil', 'self', 'true', 'false', '__FILE__', '__LINE__', '__ENCODING__'], on_const: ['ENV'], } private_constant :TOKEN_KEYWORDS diff --git a/test/irb/test_color.rb b/test/irb/test_color.rb index b136d38165..d035e443a8 100644 --- a/test/irb/test_color.rb +++ b/test/irb/test_color.rb @@ -50,7 +50,7 @@ module TestIRB '"#{}"' => "#{RED}#{BOLD}\"#{CLEAR}#{RED}\#{#{CLEAR}#{RED}}#{CLEAR}#{RED}#{BOLD}\"#{CLEAR}", ':"a#{}b"' => "#{YELLOW}:\"#{CLEAR}#{YELLOW}a#{CLEAR}#{YELLOW}\#{#{CLEAR}#{YELLOW}}#{CLEAR}#{YELLOW}b#{CLEAR}#{YELLOW}\"#{CLEAR}", ':"a#{ def b; end; \'c\' + "#{ :d }" }e"' => "#{YELLOW}:\"#{CLEAR}#{YELLOW}a#{CLEAR}#{YELLOW}\#{#{CLEAR} #{GREEN}def#{CLEAR} #{BLUE}#{BOLD}b#{CLEAR}; #{GREEN}end#{CLEAR}; #{RED}#{BOLD}'#{CLEAR}#{RED}c#{CLEAR}#{RED}#{BOLD}'#{CLEAR} + #{RED}#{BOLD}\"#{CLEAR}#{RED}\#{#{CLEAR} #{YELLOW}:#{CLEAR}#{YELLOW}d#{CLEAR} #{RED}}#{CLEAR}#{RED}#{BOLD}\"#{CLEAR} #{YELLOW}}#{CLEAR}#{YELLOW}e#{CLEAR}#{YELLOW}\"#{CLEAR}", - "[__FILE__, __LINE__]" => "[#{CYAN}#{BOLD}__FILE__#{CLEAR}, #{CYAN}#{BOLD}__LINE__#{CLEAR}]", + "[__FILE__, __LINE__, __ENCODING__]" => "[#{CYAN}#{BOLD}__FILE__#{CLEAR}, #{CYAN}#{BOLD}__LINE__#{CLEAR}, #{CYAN}#{BOLD}__ENCODING__#{CLEAR}]", ":self" => "#{YELLOW}:#{CLEAR}#{YELLOW}self#{CLEAR}", ":class" => "#{YELLOW}:#{CLEAR}#{YELLOW}class#{CLEAR}", "[:end, 2]" => "[#{YELLOW}:#{CLEAR}#{YELLOW}end#{CLEAR}, #{BLUE}#{BOLD}2#{CLEAR}]", @@ -163,6 +163,7 @@ module TestIRB 1 => "#{BLUE}#{BOLD}1#{CLEAR}\n", IRBTestColorPrinter.new('test') => "#{GREEN}##{CLEAR}\n", Ripper::Lexer.new('1').scan => "[#{GREEN}##{CLEAR}]\n", + Class.new{define_method(:pretty_print){|q| q.text("[__FILE__, __LINE__, __ENCODING__]")}}.new => "[#{CYAN}#{BOLD}__FILE__#{CLEAR}, #{CYAN}#{BOLD}__LINE__#{CLEAR}, #{CYAN}#{BOLD}__ENCODING__#{CLEAR}]\n", }.each do |object, result| actual = with_term { IRB::ColorPrinter.pp(object, '') } assert_equal(result, actual, "Case: IRB::ColorPrinter.pp(#{object.inspect}, '')")