Inspecting cyclic structures

hello,

is there a way to inspect an object only to a given depth to avoid infinite
loops in case of referential loops? like irb does:

irb(main):001:0> a = Object.new
=> #<Object:0x2be6cd0>
irb(main):002:0> b = Object.new
=> #<Object:0x2be4900>
irb(main):003:0> a.instance_variable_set(:@b, b)
=> #<Object:0x2be4900>
irb(main):004:0> b.instance_variable_set(:@a, a)
=> #<Object:0x2be6cd0 @b=#<Object:0x2be4900 @a=#<Object:0x2be6cd0 ...>>>
irb(main):005:0> a.inspect
=> "#<Object:0x2be6cd0 @b=#<Object:0x2be4900 @a=#<Object:0x2be6cd0 ...>>>"
irb(main):006:0>

thanks
konstantin

hello,

is there a way to inspect an object only to a given depth to avoid infinite
loops in case of referential loops? like irb does:

irb(main):001:0> a = Object.new
=> #<Object:0x2be6cd0>
irb(main):002:0> b = Object.new
=> #<Object:0x2be4900>
irb(main):003:0> a.instance_variable_set(:@b, b)
=> #<Object:0x2be4900>
irb(main):004:0> b.instance_variable_set(:@a, a)
=> #<Object:0x2be6cd0 @b=#<Object:0x2be4900 @a=#<Object:0x2be6cd0 ...>>>
irb(main):005:0> a.inspect
=> "#<Object:0x2be6cd0 @b=#<Object:0x2be4900 @a=#<Object:0x2be6cd0 ...>>>"
irb(main):006:0>

thanks
konstantin

   harp:~ > cat a.rb
   a = Object.new
   b = Object.new
   a.instance_variable_set(:@b, b)
   b.instance_variable_set(:@a, a)

   p a
   require "yaml" and y a
   require "pp" and pp a

   harp:~ > ruby a.rb
   #<Object:0xb75cdc64 @b=#<Object:0xb75cdc50 @a=#<Object:0xb75cdc64 ...>>>
   --- &id001 !ruby/object
   b: !ruby/object
   #<Object:0xb75cdc64 @b=#<Object:0xb75cdc50 @a=#<Object:0xb75cdc64 ...>>>

hth.

-a

···

On Tue, 14 Feb 2006, konsu wrote:
     a: *id001

--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama

please disregard this, it seems to work outside irb too. in still outputs
too much stuff in my case but it still does not loop forever.

konstantin

"konsu" <konsu@hotmail.com> wrote in message
news:99GdnSW6bqFtW23eRVn-jQ@kallback.com...

···

hello,

is there a way to inspect an object only to a given depth to avoid
infinite loops in case of referential loops? like irb does:

irb(main):001:0> a = Object.new
=> #<Object:0x2be6cd0>
irb(main):002:0> b = Object.new
=> #<Object:0x2be4900>
irb(main):003:0> a.instance_variable_set(:@b, b)
=> #<Object:0x2be4900>
irb(main):004:0> b.instance_variable_set(:@a, a)
=> #<Object:0x2be6cd0 @b=#<Object:0x2be4900 @a=#<Object:0x2be6cd0 ...>>>
irb(main):005:0> a.inspect
=> "#<Object:0x2be6cd0 @b=#<Object:0x2be4900 @a=#<Object:0x2be6cd0 ...>>>"
irb(main):006:0>

thanks
konstantin