From 515d6b47ad9e0933c94c9dc4c1f296ef2d555934 Mon Sep 17 00:00:00 2001 From: aycabta Date: Mon, 4 Jan 2021 19:38:22 +0900 Subject: [ruby/irb] Stringify when a non-object is passed to PP#text If a nested object is passed to #pp, it may be sometimes passed to the #text method as an object without being stringified. This is fixed on the Ruby main repository; https://github.com/ruby/ruby/commit/433a3be86a811de0b4adbb92e054ee3a6fc6b4d8 but it was a bug of Ripper so still needs this workaround for using irb as a gem on Ruby 3.0.0 or earlier. Co-authored-by: k0kubun https://github.com/ruby/irb/commit/8d13df22ee --- lib/irb/color_printer.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/irb/color_printer.rb b/lib/irb/color_printer.rb index 187c337187..3667ef16fe 100644 --- a/lib/irb/color_printer.rb +++ b/lib/irb/color_printer.rb @@ -10,7 +10,12 @@ module IRB out end - def text(str, width = str.length) + def text(str, width = nil) + unless str.is_a?(String) + str = str.inspect + end + width ||= str.length + case str when /\A#' super(Color.colorize(str, [:GREEN]), width) -- cgit v1.2.3