class BabelDiff::HashFlattener

Public Instance Methods

flat_hash() click to toggle source
# File lib/babel_diff/hash_flattener.rb, line 3
def flat_hash
  @_flat_hash ||= {}
end
flatten(current_hash = hash, keys = []) click to toggle source
# File lib/babel_diff/hash_flattener.rb, line 7
def flatten(current_hash = hash, keys = [])
  current_hash.each do |key, value|
    new_keys = keys.dup << key
    if value.is_a? Hash
      flatten(value, new_keys)
    else
      flat_hash[new_keys.join(".")] = value
    end
  end
  flat_hash
end
unflatten() click to toggle source
# File lib/babel_diff/hash_flattener.rb, line 19
def unflatten
  {}.tap do |unflattened_hash|
    hash.each do |k,v|
      keys = k.split(".")
      current_hash = unflattened_hash

      keys[0...-1].each { |key| current_hash = current_hash[key] ||= {} }

      current_hash[keys.last] = v
    end
  end
end