Module: AbAdmin::Models::Locator

Extended by:
ActiveSupport::Concern
Included in:
Locator
Defined in:
lib/ab_admin/models/locator.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#allObject


41
42
43
44
# File 'lib/ab_admin/models/locator.rb', line 41

def all
  @paths.each { |path| @data.deep_merge!(YAML.load_file(path)) }
  @data
end

#initializeObject


36
37
38
39
# File 'lib/ab_admin/models/locator.rb', line 36

def initialize
  @data = {}
  @files = self.class.find_files
end

#prepare_filesObject


46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ab_admin/models/locator.rb', line 46

def prepare_files
  message = nil
  locale_replace_regexp = Regexp.new("(^#{I18n.default_locale}|(?<=\.)#{I18n.default_locale}(?=\.yml))")

  locale_files = @files.map { |path| self.class.prepare_data(path) }
  main_locale_files = locale_files.find_all { |file| file.locale == I18n.default_locale }

  main_locale_files.each do |main_file|
    I18n.available_locales.each do |locale|
      next if locale == I18n.default_locale
      clean_locale_hash = main_file.data.deep_clear_values
      path = File.join(main_file.dir, main_file.filename.sub(locale_replace_regexp, locale.to_s))
      if File.exists?(path)
        file = self.class.prepare_data(path)
        self.class.save(path, {locale.to_s => clean_locale_hash.deep_add(file.data)})
      else
        self.class.save(path, {locale.to_s => clean_locale_hash})
        message = 'Reload application to pick up new locale files'
      end
    end
  end
  {message: message}
end