# frozen_string_literal: true

class WatchedWordsValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    if matches = WordWatcher.new(value).should_block?.presence
      if matches.size == 1
        key = 'contains_blocked_word'
        translation_args = { word: CGI.escapeHTML(matches[0]) }
      else
        key = 'contains_blocked_words'
        translation_args = { words: CGI.escapeHTML(matches.join(', ')) }
      end
      record.errors.add(:base, I18n.t(key, translation_args))
    end
  end
end
