Class: Lepus::Primitive::Hash

Inherits:
Hash
  • Object
show all
Defined in:
lib/lepus/primitive/hash.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Hash

Returns a new instance of Hash.



5
6
7
8
9
10
11
# File 'lib/lepus/primitive/hash.rb', line 5

def initialize(*args)
  args.each do |arg|
    arg.each do |key, value|
      self[key] = value
    end
  end
end

Instance Method Details

#deep_symbolize_keysObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/lepus/primitive/hash.rb', line 13

def deep_symbolize_keys
  each_with_object(self.class.new) do |(key, value), result|
    sym_key = key.is_a?(::String) ? key.to_sym : key
    sym_value = if value.is_a?(::Hash)
      self.class.new(value).deep_symbolize_keys
    elsif value.is_a?(::Array)
      value.map do |item|
        item.is_a?(::Hash) ? self.class.new(item).deep_symbolize_keys : item
      end
    else
      value
    end
    result[sym_key] = sym_value
  end
end