module Translatomatic::Flattenation

Methods to flatten data

Private Instance Methods

flatten(data) click to toggle source

flatten hash or array of hashes to a hash of key => value pairs

# File lib/translatomatic/flattenation.rb, line 7
def flatten(data)
  result = {}

  if data.is_a?(Hash)
    data.each do |key, value|
      flatten_add(result, key, value)
    end
  elsif data.is_a?(Array)
    data.each_with_index do |value, i|
      key = 'key' + i.to_s
      flatten_add(result, key, value)
    end
  end

  result
end
flatten_add(result, key, value) click to toggle source
# File lib/translatomatic/flattenation.rb, line 24
def flatten_add(result, key, value)
  if needs_flatten?(value)
    children = flatten(value)
    children.each do |ck, cv|
      result[key + '.' + ck] = cv
    end
  else
    result[key] = value
  end
end
needs_flatten?(value) click to toggle source
# File lib/translatomatic/flattenation.rb, line 35
def needs_flatten?(value)
  value.is_a?(Array) || value.is_a?(Hash)
end