Class: Lit::Services::LocalizationKeysToHashService

Inherits:
Object
  • Object
show all
Defined in:
lib/lit/services/localization_keys_to_hash_service.rb

Overview

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

Class Method Summary collapse

Class Method Details

.call(db_localizations) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/lit/services/localization_keys_to_hash_service.rb', line 9

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