| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Data.ISBN.ISBN13
Synopsis
- data ISBN = ISBN13 Text
- validateISBN13 :: Text -> Either ISBN13ValidationError ISBN
- renderISBN13ValidationError :: ISBN13ValidationError -> Text
- data ISBN13ValidationError
- confirmISBN13CheckDigit :: Text -> Bool
- calculateISBN13CheckDigitValue :: Text -> Int
- numericValueToISBN13Char :: Int -> Char
- unsafeToISBN13 :: Text -> ISBN
Documentation
Data type for representing ISBN values. Values of this type should be
created safely using validateISBN, which will produce ISBN10
or ISBN13 values after validating the input.
The validateISBN10 and validateISBN13 functions can
also be used to only attempt to create ISBNs of a specific type.
When importing this data type, it is recommended not expose the
constructors, and instead use unsafeToISBN10 or
unsafeToISBN13 to coerce Text values into ISBN
values.
validateISBN13 :: Text -> Either ISBN13ValidationError ISBN Source #
Used to safely create ISBN13 values represented by the ISBN data type.
Assumes that the Text input is an ISBN-13 string, either with or
without hyphens.
Will return either a validated ISBN-13 or an ISBN13ValidationError, which can be
rendered as a descriptive string using renderISBN13ValidationError.
Examples:
validateISBN13 "9780345816023" == Right (ISBN13 "9780345816023") validateISBN13 "9780807014295" == Right (ISBN13 "9780807014295") validateISBN13 "9780306406157" == Right (ISBN13 "9780306406157") validateISBN13 "978-0-306-40615-7" == Right (ISBN13 "9780306406157") validateISBN13 "9780345816029" == Left ISBN13InvalidCheckDigit validateISBN13 "9780807014299" == Left ISBN13InvalidCheckDigit validateISBN13 "00000000000000" == Left ISBN13InvalidInputLength validateISBN13 "0X00000000000" == Left ISBN13IllegalCharactersInInput
renderISBN13ValidationError :: ISBN13ValidationError -> Text Source #
Convert an ISBN10ValidationError into a human-friendly error message.
data ISBN13ValidationError Source #
Possible validation errors resulting from ISBN-13 validation.
Constructors
| ISBN13InvalidInputLength | The length of the input string is not 13 characters, not counting hyphens |
| ISBN13IllegalCharactersInInput | The ISBN-13 input contains non-numeric characters |
| ISBN13InvalidCheckDigit | The check digit is not valid for the given ISBN-13 |
Instances
| Eq ISBN13ValidationError Source # | |
Defined in Data.ISBN.ISBN13 Methods (==) :: ISBN13ValidationError -> ISBN13ValidationError -> Bool # (/=) :: ISBN13ValidationError -> ISBN13ValidationError -> Bool # | |
| Show ISBN13ValidationError Source # | |
Defined in Data.ISBN.ISBN13 Methods showsPrec :: Int -> ISBN13ValidationError -> ShowS # show :: ISBN13ValidationError -> String # showList :: [ISBN13ValidationError] -> ShowS # | |
confirmISBN13CheckDigit :: Text -> Bool Source #
numericValueToISBN13Char :: Int -> Char Source #
Converts a numeric value to an ISBN-13 character. Valid input values are the numbers from 0 to 10.