Module: Trevl::CoreExt::Hash

Defined in:
lib/trevl/core_ext/hash.rb

Class Method Summary collapse

Class Method Details

.deep_dup(hash) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/trevl/core_ext/hash.rb', line 6

def self.deep_dup(hash)
  hash.each_with_object({}) do |(key, value), result|
    result[key] = case value
    when ::Hash then deep_dup(value)
    when ::Array then value.map { |v| v.is_a?(::Hash) ? deep_dup(v) : v }
    else value
    end
  end
end

.deep_merge(base, override) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/trevl/core_ext/hash.rb', line 26

def self.deep_merge(base, override)
  base.merge(override) do |_key, base_val, override_val|
    if base_val.is_a?(::Hash) && override_val.is_a?(::Hash)
      deep_merge(base_val, override_val)
    else
      override_val
    end
  end
end

.deep_stringify_keys(hash) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/trevl/core_ext/hash.rb', line 16

def self.deep_stringify_keys(hash)
  hash.each_with_object({}) do |(key, value), result|
    result[key.to_s] = case value
    when ::Hash then deep_stringify_keys(value)
    when ::Array then value.map { |v| v.is_a?(::Hash) ? deep_stringify_keys(v) : v }
    else value
    end
  end
end