Method: Lit::Cache#nested_string_keys_to_hash

Defined in:
lib/lit/cache.rb

#nested_string_keys_to_hash(db_localizations) ⇒ Object



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/lit/cache.rb', line 146

def nested_string_keys_to_hash(db_localizations)
  # http://subtech.g.hatena.ne.jp/cho45/20061122
  deep_proc = proc do |_k, s, o|
    if s.is_a?(Hash) && o.is_a?(Hash)
      next s.merge(o, &deep_proc)
    end
    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