Class: OpenStructDeep

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/ostruct_deep/ostruct_deep/open_struct_deep.rb

Instance Method Summary collapse

Constructor Details

#initialize(hash = nil) ⇒ OpenStructDeep

Returns a new instance of OpenStructDeep.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/ostruct_deep/ostruct_deep/open_struct_deep.rb', line 5

def initialize(hash=nil)
  @table = {}
  if hash
    hash.each_pair do |k, v|
      k = k.to_sym
      v = case v
          when Hash
            OpenStructDeep.new v
          when Array
            v.map { |x| x.is_a?(Hash) ? OpenStructDeep.new(x) : x }
          else
            v
          end
      @table[k] = v
    end
  end
end

Instance Method Details

#to_hObject



23
24
25
26
27
# File 'lib/ostruct_deep/ostruct_deep/open_struct_deep.rb', line 23

def to_h
  {}.tap do |dup|
    @table.dup.each { |k, v| dup[k] = map_value(v) }
  end
end