Sha256: bb12f043d9f94614e1a824fca2880a58f2aeed9e34cc89778cb5e6083776626d

Contents?: true

Size: 1.06 KB

Versions: 15

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

# This validator takes care of ensuring the validated content is
# respectful, does not use caps, and overall is meaningful.
class EtiquetteValidator < ActiveModel::EachValidator
  include ActionView::Helpers::SanitizeHelper

  def validate_each(record, attribute, value)
    return if value.blank?

    text_value = strip_tags(value)

    validate_caps(record, attribute, text_value)
    validate_marks(record, attribute, text_value)
    validate_caps_first(record, attribute, text_value)
  end

  private

  def validate_caps(record, attribute, value)
    return if value.scan(/[A-Z]/).length < value.length / 4

    record.errors.add(attribute, options[:message] || :too_much_caps)
  end

  def validate_marks(record, attribute, value)
    return if value.scan(/[!?¡¿]{2,}/).empty?

    record.errors.add(attribute, options[:message] || :too_many_marks)
  end

  def validate_caps_first(record, attribute, value)
    return if value.scan(/\A[a-z]{1}/).empty?

    record.errors.add(attribute, options[:message] || :must_start_with_caps)
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
decidim-core-0.29.2 app/validators/etiquette_validator.rb
decidim-core-0.28.5 app/validators/etiquette_validator.rb
decidim-core-0.29.1 app/validators/etiquette_validator.rb
decidim-core-0.28.4 app/validators/etiquette_validator.rb
decidim-core-0.29.0 app/validators/etiquette_validator.rb
decidim-core-0.28.3 app/validators/etiquette_validator.rb
decidim-core-0.29.0.rc4 app/validators/etiquette_validator.rb
decidim-core-0.29.0.rc3 app/validators/etiquette_validator.rb
decidim-core-0.29.0.rc2 app/validators/etiquette_validator.rb
decidim-core-0.29.0.rc1 app/validators/etiquette_validator.rb
decidim-core-0.28.2 app/validators/etiquette_validator.rb
decidim-core-0.28.1 app/validators/etiquette_validator.rb
decidim-core-0.28.0 app/validators/etiquette_validator.rb
decidim-core-0.28.0.rc5 app/validators/etiquette_validator.rb
decidim-core-0.28.0.rc4 app/validators/etiquette_validator.rb