module LittleWeasel::Preprocessors::WordPreprocessorValidatable

This module validates word preprocessor types. rubocop: disable Layout/LineLength

Public Instance Methods

validate_word_preprocessor(word_preprocessor:) click to toggle source

:reek: ManualDispatch - ignored, this is duck-typing not 'simulated polymorphism' :reek: TooManyStatements - ignored, “too many statements” is easier to understand than arbitrarily breaking all this down into individual methods

# File lib/LittleWeasel/preprocessors/word_preprocessor_validatable.rb, line 12
def validate_word_preprocessor(word_preprocessor:)
  # You can use your own word preprocessor types as long as they quack
  # correctly; however, you are responsible for the behavior of these
  # required methods/ attributes. It's probably better to follow the
  # pattern of existing word preprocessor objects and inherit from
  # Preprocessors::WordPreprocessor.

  word_preprocessor_class = word_preprocessor.class

  # class methods
  raise validation_error_message(object: word_preprocessor_class, respond_to: '.preprocess') unless word_preprocessor_class.respond_to?(:preprocess)
  raise validation_error_message(object: word_preprocessor_class, respond_to: '.preprocess?') unless word_preprocessor_class.respond_to?(:preprocess?)

  # instance methods
  raise validation_error_message(object: word_preprocessor_class, respond_to: '#preprocess') unless word_preprocessor.respond_to?(:preprocess)
  raise validation_error_message(object: word_preprocessor_class, respond_to: '#preprocess?') unless word_preprocessor.respond_to?(:preprocess?)
  raise validation_error_message(object: word_preprocessor_class, respond_to: '#preprocessor_off?') unless word_preprocessor.respond_to?(:preprocessor_off?)
  raise validation_error_message(object: word_preprocessor_class, respond_to: '#preprocessor_on') unless word_preprocessor.respond_to?(:preprocessor_on)
  raise validation_error_message(object: word_preprocessor_class, respond_to: '#preprocessor_on=') unless word_preprocessor.respond_to?(:preprocessor_on=)
  raise validation_error_message(object: word_preprocessor_class, respond_to: '#preprocessor_on?') unless word_preprocessor.respond_to?(:preprocessor_on?)
end
validation_error_message(object:, respond_to:) click to toggle source
# File lib/LittleWeasel/preprocessors/word_preprocessor_validatable.rb, line 34
def validation_error_message(object:, respond_to:)
  "Argument word_preprocessor: does not respond to: #{object}#{respond_to}"
end