Module: ImageOptim::HashHelpers

Defined in:
lib/image_optim/hash_helpers.rb

Class Method Summary collapse

Class Method Details

.deep_merge(a, b) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/image_optim/hash_helpers.rb', line 24

def deep_merge(a, b)
  a.merge(b) do |k, v_a, v_b|
    if v_a.is_a?(Hash) && v_b.is_a?(Hash)
      deep_merge(v_a, v_b)
    else
      v_b
    end
  end
end

.deep_stringify_keys(hash) ⇒ Object



16
17
18
# File 'lib/image_optim/hash_helpers.rb', line 16

def deep_stringify_keys(hash)
  deep_transform_keys(hash, &:to_s)
end

.deep_symbolise_keys(hash) ⇒ Object



20
21
22
# File 'lib/image_optim/hash_helpers.rb', line 20

def deep_symbolise_keys(hash)
  deep_transform_keys(hash, &:to_sym)
end

.deep_transform_keys(hash, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/image_optim/hash_helpers.rb', line 4

def deep_transform_keys(hash, &block)
  new_hash = {}
  hash.each do |k, v|
    new_hash[block.call(k)] = if v.is_a?(Hash)
      deep_transform_keys(v, &block)
    else
      v
    end
  end
  new_hash
end