discourse/lib/validators/quality_title_validator.rb

25 lines
738 B
Ruby

# 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