module ImageOptim::HashHelpers
Helper methods to manipulate Hash, mainly used in config
Public Class Methods
deep_merge(a, b)
click to toggle source
Returns a new hash with recursive merge of all keys
# File lib/image_optim/hash_helpers.rb, line 18 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)
click to toggle source
Returns a new hash with all keys of root and nested hashes converted to strings
# File lib/image_optim/hash_helpers.rb, line 7 def deep_stringify_keys(hash) deep_transform_keys(hash, &:to_s) end
deep_symbolise_keys(hash)
click to toggle source
Returns a new hash with all keys of root and nested hashes converted to symbols
# File lib/image_optim/hash_helpers.rb, line 13 def deep_symbolise_keys(hash) deep_transform_keys(hash, &:to_sym) end
Private Class Methods
deep_transform_keys(hash, &block)
click to toggle source
Returns a new hash with all keys of root and nested hashes converted by provided block
# File lib/image_optim/hash_helpers.rb, line 32 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