Skip to content

class Athena::Validator::Constraints::ISBN
inherits Athena::Validator::Constraint #

Validates that an International Standard Book Number (ISBN) is either a valid ISBN-10 or ISBN-13. The underlying value is converted to a string via #to_s before being validated.

NOTE: As with most other constraints, nil and empty strings are considered valid values, in order to allow the value to be optional. If the value is required, consider combining this constraint with AVD::Constraints::NotBlank.

Configuration#

Optional Arguments#

type#

Type: AVD::Constraints::ISBN::Type Default: AVD::Constraints::ISBN::Type::Both

Type of ISBN to validate against.

message#

Type: String Default: ""

The message that will be shown if the value is invalid. This message has priority over the other messages if not empty.

Placeholders#

The following placeholders can be used in this message:

  • {{ value }} - The current (invalid) value.
isbn10_message#

Type: String Default: This value is not a valid ISBN-10.

The message that will be shown if type is AVD::Constraints::ISBN::Type::ISBN10 and the value is invalid.

Placeholders#

The following placeholders can be used in this message:

  • {{ value }} - The current (invalid) value.
isbn13_message#

Type: String Default: This value is not a valid ISBN-13.

The message that will be shown if type is AVD::Constraints::ISBN::Type::ISBN13 and the value is invalid.

Placeholders#

The following placeholders can be used in this message:

  • {{ value }} - The current (invalid) value.
both_message#

Type: String Default: This value is neither a valid ISBN-10 nor a valid ISBN-13.

The message that will be shown if type is AVD::Constraints::ISBN::Type::Both and the value is invalid.

Placeholders#

The following placeholders can be used in this message:

  • {{ value }} - The current (invalid) value.
groups#

Type: Array(String) | String | Nil Default: nil

The validation groups this constraint belongs to. AVD::Constraint::DEFAULT_GROUP is assumed if nil.

payload#

Type: Hash(String, String)? Default: nil

Any arbitrary domain-specific data that should be stored with this constraint. The payload is not used by Athena::Validator, but its processing is completely up to you.

Constants#

CHECKSUM_FAILED_ERROR = "f51bae62-6833-43b1-bc27-ae4445c59e30" #

INVALID_CHARACTERS_ERROR = "25d35907-d822-4bcc-82cc-852e30c89c0d" #

TOO_LONG_ERROR = "ebd28c75-bb42-43d6-9053-f0ea2ea93d44" #

TOO_SHORT_ERROR = "5da9e91f-7956-40f7-9788-4124463d783e" #

TYPE_NOT_RECOGNIZED_ERROR = "8d83f04d-2503-4547-97a1-935fcccd1ae1" #

Class methods#

.new(type : AVD::Constraints::ISBN::Type = :both, isbn10_message : String = "This value is not a valid ISBN-10.", isbn13_message : String = "This value is not a valid ISBN-13.", both_message : String = "This value is neither a valid ISBN-10 nor a valid ISBN-13.", message : String = "", groups : Array(String) | String | Nil = nil, payload : Hash(String, String)? = nil) #

View source

Methods#

#both_message : String #

View source

#isbn10_message : String #

View source

#isbn13_message : String #

View source

#message : String #

Returns the message that should be rendered if self is found to be invalid.

NOTE: Some subtypes do not use this and instead define multiple message properties in order to support more specific error messages.

View source

#validated_by : AVD::ConstraintValidator.class #

Returns the AVD::ConstraintValidator.class that should handle validating self.

View source