Class: Hash

Inherits:
Object show all
Defined in:
lib/foxy/extensions.rb

Instance Method Summary collapse

Instance Method Details

#deep_merge(second) ⇒ Object



22
23
24
25
# File 'lib/foxy/extensions.rb', line 22

def deep_merge(second)
  merger = proc { |_, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge(v2, &merger) : v2 }
  merge(second, &merger)
end

#deep_symbolize_keysObject



14
15
16
# File 'lib/foxy/extensions.rb', line 14

def deep_symbolize_keys
  symbolize_keys.tap { |h| h.each { |k, v| h[k] = v.deep_symbolize_keys } }
end

#downcase_keysObject



35
36
37
# File 'lib/foxy/extensions.rb', line 35

def downcase_keys
  each_with_object({}) { |(k, v), h| h.store(k.downcase, v) }
end

#recursive_hashObject



27
28
29
# File 'lib/foxy/extensions.rb', line 27

def recursive_hash
  tap { self.default_proc = proc { |h, k| h[k] = Hash.new(&h.default_proc) } }
end

#slice(*keys) ⇒ Object



31
32
33
# File 'lib/foxy/extensions.rb', line 31

def slice(*keys)
  Hash[keys.zip(values_at(*keys))]
end

#symbolize_keysObject



18
19
20
# File 'lib/foxy/extensions.rb', line 18

def symbolize_keys
  Hash[map { |k, v| [k.to_sym, v] }]
end