# frozen_string_literal: true

require 'text_sentinel'
require 'text_cleaner'

class QualityTitleValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    return if Discourse.static_doc_topic_ids.include?(record.id) && record.acting_user&.admin?

    sentinel = TextSentinel.title_sentinel(value)

    if !sentinel.valid?
      if !sentinel.seems_meaningful?
        record.errors.add(attribute, :is_invalid_meaningful)
      elsif !sentinel.seems_unpretentious?
        record.errors.add(attribute, :is_invalid_unpretentious)
      elsif !sentinel.seems_quiet?
        record.errors.add(attribute, :is_invalid_quiet)
      else
        record.errors.add(attribute, :is_invalid)
      end
    end
  end
end