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