Class: Kirico::SpaceDividerValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/kirico/validators/space_divider_validator.rb

Constant Summary collapse

HALF_WIDTH_SPACE_RULE =
' '
FULL_WIDTH_SPACE_RULE =
' '
BOTH_WIDTH_SPACE_RULE =
'[  ]'
CHECKS =
{
  half_width: regexp(HALF_WIDTH_SPACE_RULE),
  full_width: regexp(FULL_WIDTH_SPACE_RULE),
  both_width: regexp(BOTH_WIDTH_SPACE_RULE)
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.regexp(space_divider_rule) ⇒ Object



30
31
32
# File 'lib/kirico/validators/space_divider_validator.rb', line 30

def self.regexp(space_divider_rule)
  /\A[^\p{blank}]+(#{space_divider_rule}[^\p{blank}]+)+\z/
end

Instance Method Details

#check_validity!Object

Raises:

  • (ArgumentError)


40
41
42
# File 'lib/kirico/validators/space_divider_validator.rb', line 40

def check_validity!
  raise ArgumentError, "Invalid space option #{space_option}. Specify the :full_width, half_width, or :both_width." unless CHECKS.keys.include?(space_option)
end

#validate_each(record, attribute, value) ⇒ Object



44
45
46
# File 'lib/kirico/validators/space_divider_validator.rb', line 44

def validate_each(record, attribute, value)
  record.errors.add(attribute, (options[:message] || :invalid_space_divider), space_type: space_type_i18n) if value.to_s !~ CHECKS[space_option]
end