Sha256: 13a24f863f64fda50d3d16d2255d7e6fa3ffd0bc3cbb196e414535ad2d68989a

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

module I18nAdminUtils
  class SearchTranslation
    #Regex that match plain text in html
    HTML_PLAIN_TEXT_REGEX =  /(?<=>)(([^><])+)(?=<)/

    def self.search
      results = find_translation
      check_results(results)
    end

    def self.find_translation
      results = []
      dirs = I18nAdminUtils::Config.search_folders
      dirs.each do |dir|
        Dir.glob("#{dir}/**/*.*").each do |filename|
          File.open(filename).read.scan(/t\(("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')\)/).each do |result|
            key = result[0][1...-1]
            results << key
          end
        end
      end
      results
    end

    def self.check_results(results)
      missing = []
      results.each do |result|
        I18nAdminUtils::Config.locales.each do |locale|
          if I18nAdminUtils::Config.translation_model.where(:locale => locale, :key => result).first.nil?
            missing << {:locale => locale, :key => result}
          end
        end
      end
      missing
    end

    def self.find_plain_text
      results = SearchResult.new
      dirs = I18nAdminUtils::Config.search_folders
      dirs.each do |dir|
        Dir.glob("#{dir}/**/*.*").each do |filename|
          results[filename] = find_plain_text_in_file(filename)
        end
      end
      results
    end

    def self.find_plain_text_in_file(filename)
      list = []
      File.open(filename).read.scan(HTML_PLAIN_TEXT_REGEX).each do |result|
        list << result[0] unless result[0].blank?
      end
      list
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
i18n_admin_utils-0.0.3 lib/i18n_admin_utils/search_translation.rb