class Lit::LocalizationKeysToHashService

Converts flat hash with localization_keys as keys and translations as values to nested hash by nesting on '.' localization key dots

Public Class Methods

call(db_localizations) click to toggle source

subtech.g.hatena.ne.jp/cho45/20061122

# File lib/lit/services/localization_keys_to_hash_service.rb, line 8
def self.call(db_localizations)
  deep_proc = proc do |_k, s, o|
    next s.merge(o, &deep_proc) if s.is_a?(Hash) && o.is_a?(Hash)

    next o
  end
  nested_keys = {}
  db_localizations.sort.each do |k, v|
    key_parts = k.to_s.split('.')
    converted = key_parts.reverse.reduce(v) { |a, n| { n => a } }
    nested_keys.merge!(converted, &deep_proc)
  end
  nested_keys
end