diff options
| author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-15 15:38:08 +0000 |
|---|---|---|
| committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-15 15:38:08 +0000 |
| commit | 60bdcfd6b662f5d602f51559950fcac6c43bcf3d (patch) | |
| tree | afba756050402056accb53169845731f3ef73ce7 /lib/ostruct.rb | |
| parent | 7e52c0e34910645f50c8efdbab5e419c2c3a4256 (diff) | |
merges r21496 from trunk into ruby_1_9_1.
* lib/ostruct.rb (OpenStruct#inspect): fixed the recursion check.
Patch by Kornelius Kalnbach. [ruby-core:20992].
* test/ostruct/test_ostruct.rb: test for inspect.
Patch by Kornelius Kalnbach. [ruby-core:20992].
git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1@21555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/ostruct.rb')
| -rw-r--r-- | lib/ostruct.rb | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/lib/ostruct.rb b/lib/ostruct.rb index f3ed01524..35a14b492 100644 --- a/lib/ostruct.rb +++ b/lib/ostruct.rb @@ -112,25 +112,23 @@ class OpenStruct def inspect str = "#<#{self.class}" - Thread.current[InspectKey] ||= [] - if Thread.current[InspectKey].include?(self) then - str << " ..." - else + ids = (Thread.current[InspectKey] ||= []) + if ids.include?(object_id) + return str << ' ...>' + end + + ids << object_id + begin first = true for k,v in @table str << "," unless first first = false - - Thread.current[InspectKey] << v - begin - str << " #{k}=#{v.inspect}" - ensure - Thread.current[InspectKey].pop - end + str << " #{k}=#{v.inspect}" end + return str << '>' + ensure + ids.pop end - - str << ">" end alias :to_s :inspect |
