Quoting drbrain / segment7.net, on Sat, Feb 26, 2005 at 03:49:49PM +0900:
> On 25 Feb 2005, at 18:55, Sam Roberts wrote:
> 
> >Quoting drbrain / segment7.net, on Sat, Feb 26, 2005 at 10:24:52AM +0900:
> >>On 25 Feb 2005, at 16:03, Sam Roberts wrote:
> >>>Quoting drbrain / segment7.net, on Sat, Feb 26, 2005 at 02:43:31AM 
> >>>+0900:
> >>>>On 24 Feb 2005, at 19:51, Sam Roberts wrote:
> >>>>>module Kernel
> >>>>>  def to_pp
> >>>>>    s = PP.pp(self, '')
> >>>>>    s.chomp!
> >>>>>    s
> >>>>>  end
> >>>>>  alias_method :to_irb :to_pp
> >>>>>end
> >>>>
> >>>>Object#prettyprint
> >>>
> >>>$ irb -r pp
> >>>irb(main):001:0> [1,2,3].prettyprint
> >>>NoMethodError: undefined method `prettyprint' for [1, 2, 3]:Array
> >>>       from (irb):1
> >>
> >>Oh that's right its pretty_print and it takes an arg, making it less
> >>useful than my first glance through pp.rb revealed.
> >>
> >>I resubmit with Object#pretty_print_inspect
> >
> >Did you try?
> 
> It only works for builtins.  If you want fancy printing for your 
> objects you must define pretty_print.

Your (series) of suggestions was to the effect that I didn't have to
write my #to_pp, it somehow exists already, was it not?

Or are you just listing methods that PP has, that CANNOT be used to
replace #inspect, in the hope that is helpful?

> >It would be nice if this worked. Perhaps it should be an RCR, or is
> >there actually a method that does this that neither of us have found?
> 
> The problem is, how do you write a generic way of prettily printing 
> every object you could come across?  #inspect is a good default, but 
> being prettier than that is hard.

I submit that #inspect is much prettier than raising a runtime error.

> Instead, PrettyPrint leaves it up to you.

Leaving #pretty_print_inspect useless for the purpose you are suggesting
it, replacing #inspect, unless I very much misunderstand what you are
talking about.

Also, you keep saying "you", as if it is MY objects that lack
#pretty_print, it is ALL objects other than a dozen builtins that lack
it, and I am not about to define #pretty_print for all the standard
library:

irb(main):003:0> Date.new.pretty_print_inspect
RuntimeError: pretty_print is not overridden.
        from /usr/local/lib/ruby/1.8/pp.rb:383:in `pretty_print_inspect'
        from (irb):3

Note that Kernel.pp uses the perfectly reasonable default:

irb(main):004:0> pp Date.new
#<Date: -1/2,0,2299161>
=> nil

As does #to_pp:

irb(main):003:0> Date.new.to_pp
=> "#<Date: -1/2,0,2299161>"


Good day,
Sam