Class: DeepOpenStruct

Inherits:
Object
  • Object
show all
Defined in:
lib/deepopenstruct.rb

Class Method Summary collapse

Class Method Details

.load(item) ⇒ Object

Raises:

  • (ArgumentError)


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