From 021b8213c9e7e9b05d97f7ef6a998f0756905009 Mon Sep 17 00:00:00 2001 From: Earlopain <14981592+Earlopain@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:50:06 +0200 Subject: [PATCH] Fix colorization of imaginary/rational numbers In prism there is no singualr `RATIONAL`/`IMAGINARY` token. Instead they are more fine-grained. --- lib/rdoc/parser/ruby_colorizer.rb | 8 ++++++-- test/rdoc/parser/ruby_colorizer_test.rb | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/rdoc/parser/ruby_colorizer.rb b/lib/rdoc/parser/ruby_colorizer.rb index 4765e79c3d..fdfbfe0b23 100644 --- a/lib/rdoc/parser/ruby_colorizer.rb +++ b/lib/rdoc/parser/ruby_colorizer.rb @@ -34,9 +34,13 @@ module RDoc::Parser::RubyColorizer CONSTANT: :constant, LABEL: :value, INTEGER: :value, + INTEGER_IMAGINARY: :value, + INTEGER_RATIONAL: :value, + INTEGER_RATIONAL_IMAGINARY: :value, FLOAT: :value, - RATIONAL: :value, - IMAGINARY: :value, + FLOAT_IMAGINARY: :value, + FLOAT_RATIONAL: :value, + FLOAT_RATIONAL_IMAGINARY: :value, COMMENT: :comment, EMBDOC_BEGIN: :comment, EMBDOC_LINE: :comment, diff --git a/test/rdoc/parser/ruby_colorizer_test.rb b/test/rdoc/parser/ruby_colorizer_test.rb index 4b4b3b0502..40b4883dfc 100644 --- a/test/rdoc/parser/ruby_colorizer_test.rb +++ b/test/rdoc/parser/ruby_colorizer_test.rb @@ -199,4 +199,25 @@ def f assert_include(tokens, token(:string, '}')) assert_include(tokens, token(:string, " heredoc\n")) end + + def test_rational_imaginary + code = <<~RUBY + 2i + 2r + 2ri + + 2.0i + 2.0r + 2.0ri + RUBY + tokens = RDoc::Parser::RubyColorizer.colorize(code) + assert_equal(code, tokens.map(&:text).join) + + assert_include(tokens, token(:value, "2i")) + assert_include(tokens, token(:value, "2r")) + assert_include(tokens, token(:value, "2ri")) + assert_include(tokens, token(:value, "2.0i")) + assert_include(tokens, token(:value, "2.0r")) + assert_include(tokens, token(:value, "2.0ri")) + end end