mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
03d1b314b8
commit
d5159ddec8
3 changed files with 34 additions and 14 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,7 +1,15 @@
|
||||||
|
Tue Jan 13 21:45:53 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
|
||||||
|
|
||||||
|
* 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].
|
||||||
|
|
||||||
Tue Jan 13 21:28:14 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
|
Tue Jan 13 21:28:14 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
|
||||||
|
|
||||||
* object.c (rb_obj_not_match): rdoc.
|
* object.c (rb_obj_not_match): rdoc.
|
||||||
Patch by Kornelius Kalnbach.
|
Patch by Kornelius Kalnbach. [ruby-core:20991]
|
||||||
|
|
||||||
Tue Jan 13 21:44:30 2009 NAKAMURA Usaku <usa@ruby-lang.org>
|
Tue Jan 13 21:44:30 2009 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
|
|
|
@ -112,26 +112,24 @@ class OpenStruct
|
||||||
def inspect
|
def inspect
|
||||||
str = "#<#{self.class}"
|
str = "#<#{self.class}"
|
||||||
|
|
||||||
Thread.current[InspectKey] ||= []
|
ids = (Thread.current[InspectKey] ||= [])
|
||||||
if Thread.current[InspectKey].include?(self) then
|
if ids.include?(object_id)
|
||||||
str << " ..."
|
return str << ' ...>'
|
||||||
else
|
end
|
||||||
|
|
||||||
|
ids << object_id
|
||||||
|
begin
|
||||||
first = true
|
first = true
|
||||||
for k,v in @table
|
for k,v in @table
|
||||||
str << "," unless first
|
str << "," unless first
|
||||||
first = false
|
first = false
|
||||||
|
|
||||||
Thread.current[InspectKey] << v
|
|
||||||
begin
|
|
||||||
str << " #{k}=#{v.inspect}"
|
str << " #{k}=#{v.inspect}"
|
||||||
|
end
|
||||||
|
return str << '>'
|
||||||
ensure
|
ensure
|
||||||
Thread.current[InspectKey].pop
|
ids.pop
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
str << ">"
|
|
||||||
end
|
|
||||||
alias :to_s :inspect
|
alias :to_s :inspect
|
||||||
|
|
||||||
attr_reader :table # :nodoc:
|
attr_reader :table # :nodoc:
|
||||||
|
|
|
@ -20,4 +20,18 @@ class TC_OpenStruct < Test::Unit::TestCase
|
||||||
o2.instance_eval{@table = {:a => 'b'}}
|
o2.instance_eval{@table = {:a => 'b'}}
|
||||||
assert_not_equal(o1, o2)
|
assert_not_equal(o1, o2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_inspect
|
||||||
|
foo = OpenStruct.new
|
||||||
|
assert_equal("#<OpenStruct>", foo.inspect)
|
||||||
|
foo.bar = 1
|
||||||
|
foo.baz = 2
|
||||||
|
assert_equal("#<OpenStruct bar=1, baz=2>", foo.inspect)
|
||||||
|
|
||||||
|
foo = OpenStruct.new
|
||||||
|
foo.bar = OpenStruct.new
|
||||||
|
assert_equal('#<OpenStruct bar=#<OpenStruct>>', foo.inspect)
|
||||||
|
foo.bar.foo = foo
|
||||||
|
assert_equal('#<OpenStruct bar=#<OpenStruct foo=#<OpenStruct ...>>>', foo.inspect)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue