diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2019-05-25 08:01:51 -0700 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2019-05-25 08:19:15 -0700 |
commit | 98be203704e98c53b2d3b939b10a0d765c76d53d (patch) | |
tree | 32639626fe6bc43e8dcc174bee2b550e8a61c6bc | |
parent | a4d44b08ec5139f91617f0fc5786494c5076aaa1 (diff) |
Support some unhandled syntax highlight
Heredoc, %i, :Foo, { 'a': ... }, ...
:'a' is still half-broken.
-rw-r--r-- | lib/irb/color.rb | 8 | ||||
-rw-r--r-- | test/irb/test_color.rb | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/irb/color.rb b/lib/irb/color.rb index ad5b203010..7bd1799ada 100644 --- a/lib/irb/color.rb +++ b/lib/irb/color.rb @@ -21,21 +21,25 @@ module IRB # :nodoc: begin TOKEN_SEQ_EXPRS = { on_CHAR: [[BLUE, BOLD], [Ripper::EXPR_END]], - on_const: [[BLUE, BOLD, UNDERLINE], [Ripper::EXPR_ARG, Ripper::EXPR_CMDARG]], + on_const: [[BLUE, BOLD, UNDERLINE], [Ripper::EXPR_ARG, Ripper::EXPR_CMDARG, Ripper::EXPR_ENDFN]], on_embexpr_beg: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END]], on_embexpr_end: [[RED], [Ripper::EXPR_END, Ripper::EXPR_ENDFN, Ripper::EXPR_CMDARG]], on_embvar: [[RED], [Ripper::EXPR_BEG]], + on_heredoc_beg: [[RED], [Ripper::EXPR_BEG]], + on_heredoc_end: [[RED], [Ripper::EXPR_BEG]], on_ident: [[BLUE, BOLD], [Ripper::EXPR_ENDFN]], on_int: [[BLUE, BOLD], [Ripper::EXPR_END]], on_float: [[MAGENTA, BOLD], [Ripper::EXPR_END]], on_kw: [[GREEN], [Ripper::EXPR_ARG, Ripper::EXPR_CLASS, Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_FNAME]], on_label: [[MAGENTA], [Ripper::EXPR_LABELED]], + on_label_end: [[RED], [Ripper::EXPR_BEG]], on_qwords_beg: [[RED], [Ripper::EXPR_BEG]], + on_qsymbols_beg: [[RED], [Ripper::EXPR_BEG]], on_regexp_beg: [[RED, BOLD], [Ripper::EXPR_BEG]], on_regexp_end: [[RED, BOLD], [Ripper::EXPR_BEG]], on_symbeg: [[BLUE, BOLD], [Ripper::EXPR_FNAME]], on_tstring_beg: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_ARG, Ripper::EXPR_CMDARG]], - on_tstring_content: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_ARG, Ripper::EXPR_CMDARG]], + on_tstring_content: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_ARG, Ripper::EXPR_CMDARG, Ripper::EXPR_FNAME]], on_tstring_end: [[RED], [Ripper::EXPR_END]], } rescue NameError diff --git a/test/irb/test_color.rb b/test/irb/test_color.rb index 1d7d74e151..95ed190dae 100644 --- a/test/irb/test_color.rb +++ b/test/irb/test_color.rb @@ -1,6 +1,7 @@ # frozen_string_literal: false require 'test/unit' require 'irb/color' +require 'rubygems' require 'stringio' module TestIRB @@ -36,6 +37,11 @@ module TestIRB "4.5.6" => "4.5.6", "[1]]]" => "[1]]]", "\e[0m\n" => "^[[#{BLUE}#{BOLD}0#{CLEAR}m\n", + "%w[a b]" => "#{RED}%w[#{CLEAR}#{RED}a#{CLEAR} #{RED}b#{CLEAR}#{RED}]#{CLEAR}", + "%i[c d]" => "#{RED}%i[#{CLEAR}#{RED}c#{CLEAR} #{RED}d#{CLEAR}#{RED}]#{CLEAR}", + "{'a': 1}" => "{#{RED}'#{CLEAR}#{RED}a#{CLEAR}#{RED}':#{CLEAR} #{BLUE}#{BOLD}1#{CLEAR}}", + ":Struct" => "#{BLUE}#{BOLD}:#{CLEAR}#{BLUE}#{BOLD}#{UNDERLINE}Struct#{CLEAR}", + "<<EOS\nhere\nEOS" => "#{RED}<<EOS#{CLEAR}\n#{RED}here#{CLEAR}\n#{RED}EOS#{CLEAR}", }.each do |code, result| actual = with_term { IRB::Color.colorize_code(code) } assert_equal(result, actual, "Case: colorize_code(#{code.dump})\nResult: #{humanized_literal(actual)}") |