14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/deepopenstruct.rb', line 14
def self.load(item)
raise ArgumentError, "DeepOpenStruct must be passed a Hash or Array" unless(item.is_a?(Hash) || item.is_a?(Array))
if(item.is_a?(Hash))
item = item.merge(item) do |key, value, oldvalue|
if(value.is_a?(Hash) || value.is_a?(Array))
DeepOpenStruct.load(value)
else
value
end
end
return PatchedOpenStruct.new(item)
elsif(item.is_a?(Array))
return item.map do |value|
if(value.is_a?(Hash) || value.is_a?(Array))
DeepOpenStruct.load(value)
else
value
end
end
end
end
|