From f8a45c1cbf91afaf183caea6ceafffa973a5924d Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 10 May 2003 20:53:58 +0000 Subject: * lib/pp.rb (PP::ObjectMixin#pretty_print): refine to_s handling. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/pp.rb | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/pp.rb b/lib/pp.rb index e77f56350..8eb9ce4af 100644 --- a/lib/pp.rb +++ b/lib/pp.rb @@ -239,13 +239,15 @@ class PP < PrettyPrint module ObjectMixin # 1. specific pretty_print - # 2. specific inspect or to_s - # 3. generic pretty_print + # 2. specific inspect + # 3. specific to_s if instance variable is empty + # 4. generic pretty_print def pretty_print(pp) - if /\(Kernel\)#/ !~ method(:inspect).inspect || - /\(Kernel\)#/ !~ method(:to_s).inspect - pp.text inspect + if /\(Kernel\)#/ !~ method(:inspect).inspect + pp.text self.inspect + elsif /\(Kernel\)#/ !~ method(:to_s).inspect && instance_variables.empty? + pp.text self.to_s else pp.pp_object(self) end @@ -521,6 +523,23 @@ if __FILE__ == $0 a = proc {1} assert_equal("#{a.inspect}\n", PP.pp(a, '')) end + + class Test_to_s_with_iv + def initialize() @a = nil end + def to_s() "aaa" end + end + def test_to_s_with_iv + a = Test_to_s_with_iv.new + assert_equal("#{a.inspect}\n", PP.pp(a, '')) + end + + class Test_to_s_without_iv + def to_s() "aaa" end + end + def test_to_s_without_iv + a = Test_to_s_without_iv.new + assert_equal("#{a.inspect}\n", PP.pp(a, '')) + end end class PPCycleTest < Test::Unit::TestCase -- cgit