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



74
75
76
77
# File 'lib/ab_admin/models/locator.rb', line 74

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

#initializeObject



69
70
71
72
# File 'lib/ab_admin/models/locator.rb', line 69

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

#prepare_filesObject



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/ab_admin/models/locator.rb', line 79

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