class IsbnValidator

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/active_validation/validators/isbn_validator.rb, line 7
def validate_each(record, attribute, value)
  return if valid?(value.to_s)

  record.errors[attribute] <<
    (options[:message] || I18n.t('active_validation.errors.messages.isbn'))
end

Private Instance Methods

valid?(value) click to toggle source
# File lib/active_validation/validators/isbn_validator.rb, line 28
def valid?(value)
  valid_length?(value) &&
    valid_format?(value)
end
valid_format?(value) click to toggle source
# File lib/active_validation/validators/isbn_validator.rb, line 16
def valid_format?(value)
  return(false) if value.empty?

  value = value.gsub(/-| /, '').downcase.chars

  [10, 13].include?(value.size) && value.all? { |chr| CHARACTERS.include?(chr) }
end
valid_length?(value) click to toggle source
# File lib/active_validation/validators/isbn_validator.rb, line 24
def valid_length?(value)
  value.present?
end