diff options
-rw-r--r-- | lib/pp.rb | 20 | ||||
-rw-r--r-- | test/test_pp.rb | 9 |
2 files changed, 29 insertions, 0 deletions
@@ -416,6 +416,26 @@ class Struct # :nodoc: end end +class Data # :nodoc: + def pretty_print(q) # :nodoc: + q.group(1, sprintf("#<data %s", PP.mcall(self, Kernel, :class).name), '>') { + q.seplist(PP.mcall(self, Data, :members), lambda { q.text "," }) {|member| + q.breakable + q.text member.to_s + q.text '=' + q.group(1) { + q.breakable '' + q.pp public_send(member) + } + } + } + end + + def pretty_print_cycle(q) # :nodoc: + q.text sprintf("#<data %s:...>", PP.mcall(self, Kernel, :class).name) + end +end if "3.2" <= RUBY_VERSION + class Range # :nodoc: def pretty_print(q) # :nodoc: q.pp self.begin diff --git a/test/test_pp.rb b/test/test_pp.rb index 9cef555d79..4fcb8df4b0 100644 --- a/test/test_pp.rb +++ b/test/test_pp.rb @@ -152,6 +152,15 @@ class PPCycleTest < Test::Unit::TestCase assert_equal("#{a.inspect}\n", PP.pp(a, ''.dup)) end + if "3.2" <= RUBY_VERSION + D = Data.define(:aaa, :bbb) + def test_data + a = D.new("aaa", "bbb") + assert_equal("#<data PPTestModule::PPCycleTest::D\n aaa=\"aaa\",\n bbb=\"bbb\">\n", PP.pp(a, ''.dup, 20)) + assert_equal("#{a.inspect}\n", PP.pp(a, ''.dup)) + end + end + def test_object a = Object.new a.instance_eval {@a = a} |