From: Elliot Winkler Date: 2006-10-31T05:35:50+09:00 Subject: Re: PP / PrettyPrint annoyances ------=_Part_82083_2518544.1162240546516 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline #inspect would work if the array were simple, but the array I want to pretty print is not. I would give you the real case but it's really long, so a better example is: #!/usr/bin/ruby require 'pp' array = [ { :key1 => 'value1', :key2 => 'value2', :key3 => 'value3' }, 1, 2, 3, [ 'foo', 'bar', [ { :key1 => 'value1', :key2 => 'value2' }, 'baz', 'quux' ] ] ] array2 = array.dup array2[4][2].push('a longer string', 'an even longer string') p array puts pp array puts p array2 puts pp array2 ==OUTPUT== [{:key1=>"value1", :key2=>"value2", :key3=>"value3"}, 1, 2, 3, ["foo", "bar", [{:key1=>"value1", :key2=>"value2"}, "baz", "quux"]]] [{:key1=>"value1", :key2=>"value2", :key3=>"value3"}, 1, 2, 3, ["foo", "bar", [{:key1=>"value1", :key2=>"value2"}, "baz", "quux"]]] [{:key1=>"value1", :key2=>"value2", :key3=>"value3"}, 1, 2, 3, ["foo", "bar", [{:key1=>"value1", :key2=>"value2"}, "baz", "quux", "longer string", "even longer string"]]] [{:key1=>"value1", :key2=>"value2", :key3=>"value3"}, 1, 2, 3, ["foo", "bar", [{:key1=>"value1", :key2=>"value2"}, "baz", "quux", "longer string", "even longer string"]]] For array2, I want 1, 2, and 3 to be on one line, "foo" and "bar" to be one line, and "baz", "quux" and "longer string" to be one line. PP isn't doing that, obviously. Perhaps someone knows of another pretty print library? -- Elliot On 10/30/06, Justin Collins wrote: > > Elliot Winkler wrote: > > Hello all, > > > > PP/PrettyPrint comes in handy when I'm trying to inspect the contents of > > large arrays, but what if some elements are short length-wise? > > > > irb(main):001:0> require 'pp' > > => true > > irb(main):002:0> pp (0..20).to_a > > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, > > 20] > > => nil > > irb(main):003:0> pp (0..40).to_a > > [0, > > > > > > This behavior is sort of ridiculous in my opinion. I'd rather have > > something > > more like: > > > > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, > > 20, > > 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, > > 39, 40] > > > > I've looked at the source code and documentation for PrettyPrint and > > PP but > > I don't understand how they work, so I'm not really sure how the classes > > could be extended so they work how I want them to work. I also tried > > numerous Google searches and it seems no one has a problem with the > > default > > behavior as I do. Can someone give me a hand here or at least point me > in > > the right direction? > > You could just use inspect (not sure if that's what you really want, > though): > > irb(main):001:0> (0..100).to_a.inspect > => "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, > 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, > 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, > 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, > 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, > 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]" > > > -Justin > > ------=_Part_82083_2518544.1162240546516--