class Spellr::ConfigValidator

Public Instance Methods

checker_and_reporter_coexist() click to toggle source
# File lib/spellr/config_validator.rb, line 34
def checker_and_reporter_coexist
  if Spellr.config.reporter.class.name == 'Spellr::Interactive' &&
      Spellr.config.checker.name == 'Spellr::CheckParallel'
    errors << 'CLI error: --interactive is incompatible with --parallel'
  end
end
interactive_is_interactive() click to toggle source
# File lib/spellr/config_validator.rb, line 21
def interactive_is_interactive # rubocop:disable Metrics/MethodLength
  return unless Spellr.config.reporter.class.name == 'Spellr::Interactive'

  # I have no idea how to check for this other than call it
  Timeout.timeout(0.0000000000001) do
    Spellr.config.output.stdin.getch
  end
rescue Errno::ENOTTY, Errno::ENODEV, IOError
  errors << 'CLI error: --interactive is unavailable in a non-interactive terminal'
rescue Timeout::Error
  nil
end
keys_are_single_characters() click to toggle source
# File lib/spellr/config_validator.rb, line 54
def keys_are_single_characters
  bad_languages = Spellr.config.languages.select { |l| l.key.length > 1 }

  bad_languages.each do |lang|
    errors << "Config error: #{lang.name} defines a key that is too long (#{lang.key}). "\
      'Please change it to be a single character'
  end
end
languages_with_conflicting_keys() click to toggle source
# File lib/spellr/config_validator.rb, line 48
def languages_with_conflicting_keys
  Spellr.config.languages.select(&:addable?).group_by(&:key).values.select do |g|
    g.length > 1
  end
end
only_has_one_key_per_language() click to toggle source
# File lib/spellr/config_validator.rb, line 41
def only_has_one_key_per_language
  languages_with_conflicting_keys.each do |conflicts|
    errors << "Config error: #{conflicts.map(&:name).join(' & ')} share the same language key "\
    "(#{conflicts.first.key}). Please define one to be different with `key:`"
  end
end
valid?() click to toggle source
Calls superclass method Spellr::Validations#valid?
# File lib/spellr/config_validator.rb, line 17
def valid?
  raise ::Spellr::Config::Invalid, errors.join("\n") unless super
end