File tree Expand file tree Collapse file tree 1 file changed +2
-4
lines changed Expand file tree Collapse file tree 1 file changed +2
-4
lines changed Original file line number Diff line number Diff line change 7373# of these properties compared to using a Hash or a Struct.
7474#
7575class OpenStruct
76- attr_reader :recursive
77-
7876 #
7977 # Creates a new OpenStruct object. By default, the resulting OpenStruct
8078 # object will have no attributes.
@@ -95,7 +93,7 @@ def initialize(hash=nil, is_recursive=false)
9593 if hash
9694 hash . each_pair do |k , v |
9795 k = k . to_sym
98- @table [ k ] = ( recursive && v . is_a? ( Hash ) ) ? OpenStruct . new ( v , true ) : v
96+ @table [ k ] = ( @ recursive && v . respond_to? ( :to_hash ) ) ? OpenStruct . new ( v , true ) : v
9997 end
10098 end
10199 end
@@ -204,7 +202,7 @@ def method_missing(mid, *args) # :nodoc:
204202 if len != 1
205203 raise ArgumentError , "wrong number of arguments (#{ len } for 1)" , caller ( 1 )
206204 end
207- modifiable? [ new_ostruct_member! ( mname ) ] = ( recursive && args [ 0 ] . is_a? ( Hash ) ) ? OpenStruct . new ( args [ 0 ] , true ) : args [ 0 ]
205+ modifiable? [ new_ostruct_member! ( mname ) ] = ( @ recursive && args [ 0 ] . respond_to? ( :to_hash ) ) ? OpenStruct . new ( args [ 0 ] , true ) : args [ 0 ]
208206 elsif len == 0 # and /\A[a-z_]\w*\z/ =~ mid #
209207 if @table . key? ( mid )
210208 new_ostruct_member! ( mid ) unless frozen?
You can’t perform that action at this time.
0 commit comments