Skip to content

Commit 388869c

Browse files
committed
Passing options as an argument to initializer instead of is_recursive,
1 parent 852f0e3 commit 388869c

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

lib/ostruct.rb

+5-4
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,14 @@ class OpenStruct
8787
#
8888
# data # => #<OpenStruct country="Australia", capital="Canberra">
8989
#
90-
def initialize(hash=nil, is_recursive=false)
90+
def initialize(hash=nil, options={recursive: true})
9191
@table = {}
92-
@recursive = is_recursive
92+
@recursive = options.fetch(:recursive, false)
93+
puts @recursive
9394
if hash
9495
hash.each_pair do |k, v|
9596
k = k.to_sym
96-
@table[k] = (@recursive && v.respond_to?(:to_hash)) ? OpenStruct.new(v,true) : v
97+
@table[k] = (@recursive && v.respond_to?(:to_hash)) ? OpenStruct.new(v, {recursive: true}) : v
9798
end
9899
end
99100
end
@@ -202,7 +203,7 @@ def method_missing(mid, *args) # :nodoc:
202203
if len != 1
203204
raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
204205
end
205-
modifiable?[new_ostruct_member!(mname)] = (@recursive && args[0].respond_to?(:to_hash)) ? OpenStruct.new(args[0],true) : args[0]
206+
modifiable?[new_ostruct_member!(mname)] = (@recursive && args[0].respond_to?(:to_hash)) ? OpenStruct.new(args[0], {recursive: true}) : args[0]
206207
elsif len == 0 # and /\A[a-z_]\w*\z/ =~ mid #
207208
if @table.key?(mid)
208209
new_ostruct_member!(mid) unless frozen?

0 commit comments

Comments
 (0)