module TestConfig::HashMethods

Public Class Methods

deep_merge(orig_data, new_data) click to toggle source
# 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) click to toggle source
# 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