class I18n::Hygiene::KeyUsageChecker

Checks the usage of i18n keys in the codebase.

Public Class Methods

new(directories:, exclude_files: [], file_extensions: []) click to toggle source
# File lib/i18n/hygiene/key_usage_checker.rb, line 6
def initialize(directories:, exclude_files: [], file_extensions: [])
  @directories = directories
  @exclude_files = exclude_files
  @file_extensions = file_extensions

  raise "Must have grep installed!" unless system("which grep > /dev/null")
end

Public Instance Methods

used?(key) click to toggle source
# File lib/i18n/hygiene/key_usage_checker.rb, line 14
def used?(key)
  fully_qualified_key_used?(key)
end

Private Instance Methods

fully_qualified_key_used?(key) click to toggle source
# File lib/i18n/hygiene/key_usage_checker.rb, line 20
def fully_qualified_key_used?(key)
  if pluralized_key_used?(key)
    fully_qualified_key_used?(without_last_part(key))
  else
    directories = @directories.join(" ")
    include_argument = @file_extensions.map { |extension| "--include=\"*.#{extension}\"" }.join(" ")
    exclude_argument = @exclude_files.map { |file| "--exclude=\"#{file}\"" }.join(" ")

    grep_command = [
      "grep --recursive",
      key,
      include_argument,
      exclude_argument,
      directories
    ].reject(&:empty?).join(" ")

    %x<#{grep_command} | wc -l>.strip.to_i > 0
  end
end
pluralized_key_used?(key) click to toggle source
# File lib/i18n/hygiene/key_usage_checker.rb, line 40
def pluralized_key_used?(key)
  [ "zero", "one", "other" ].include?(key.split(".").last)
end
without_last_part(key) click to toggle source
# File lib/i18n/hygiene/key_usage_checker.rb, line 44
def without_last_part(key)
  key.split(".")[0..-2].join(".")
end