From 278522f0535d081ff6473f210cb45f923ff8810a Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Fri, 19 Mar 2021 19:08:39 -0700 Subject: [PATCH] [ruby/irb] Don't call Ruby 2.4+'s String#pretty_print https://github.com/ruby/irb/commit/89bcf107be --- lib/irb/color_printer.rb | 9 +++++++++ test/irb/test_color_printer.rb | 1 + 2 files changed, 10 insertions(+) diff --git a/lib/irb/color_printer.rb b/lib/irb/color_printer.rb index 92afea51cd..30c6825750 100644 --- a/lib/irb/color_printer.rb +++ b/lib/irb/color_printer.rb @@ -21,6 +21,15 @@ module IRB end end + def pp(obj) + if obj.is_a?(String) + # Avoid calling Ruby 2.4+ String#pretty_print that splits a string by "\n" + text(obj.inspect) + else + super + end + end + def text(str, width = nil) unless str.is_a?(String) str = str.inspect diff --git a/test/irb/test_color_printer.rb b/test/irb/test_color_printer.rb index 1b28837658..1afc7ccf55 100644 --- a/test/irb/test_color_printer.rb +++ b/test/irb/test_color_printer.rb @@ -34,6 +34,7 @@ module TestIRB end { 1 => "#{BLUE}#{BOLD}1#{CLEAR}\n", + "a\nb" => %[#{RED}#{BOLD}"#{CLEAR}#{RED}a\\nb#{CLEAR}#{RED}#{BOLD}"#{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",