Module: TestConfig::HashMethods

Defined in:
lib/test_config/hash_methods.rb

Class Method Summary collapse

Class Method Details

.deep_merge(orig_data, new_data) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/test_config/hash_methods.rb', line 19

def self.deep_merge(orig_data, new_data)
  merger = proc do |key, v1, v2|
    Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2
  end

  orig_data.merge(new_data, &merger)
end

.deep_symbolize(data) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/test_config/hash_methods.rb', line 3

def self.deep_symbolize(data)
  if data.is_a?(Hash)
    return data.inject({}) do |memo, (k, v)|
      memo.tap { |m| m[k.to_sym] = deep_symbolize(v) }
    end
  end

  if data.is_a?(Array)
    return data.inject([]) do |memo, v|
      memo << deep_symbolize(v); memo
    end
  end

  data
end