glisbn

Package VersionHex Docs

A ISBN utility library for Gleam. Supports both ISBN-10 and ISBN-13.

gleam add glisbn
import glisbn
pub fn main() {
// Validation
glisbn.is_valid("978-85-359-0277-8") // -> True
glisbn.is_valid("85-359-0277-5") // -> True
glisbn.is_valid("85-359-0277") // -> False
glisbn.is_checkdigit_valid("85-359-0277-5") // -> True
glisbn.is_hyphens_correct("978-85-359-0277-8") // -> True
glisbn.is_hyphens_correct("97-8853590277-8") // -> False
// Check digits
glisbn.isbn10_checkdigit("85-359-0277") // -> Ok("5")
glisbn.isbn13_checkdigit("978-5-12345-678") // -> Ok("1")
glisbn.get_checkdigit("9788535902778") // -> Ok("8")
// Conversion
glisbn.isbn10_to_13("85-359-0277-5") // -> Ok("9788535902778")
glisbn.isbn13_to_10("9788535902778") // -> Ok("8535902775")
// Hyphenation
glisbn.hyphenate("9788535902778") // -> Ok("978-85-359-0277-8")
glisbn.hyphenate("0306406152") // -> Ok("0-306-40615-2")
// Metadata
glisbn.get_prefix("9788535902778") // -> Ok("978-85")
glisbn.get_publisher_zone("9788535902778") // -> Ok("Brazil")
glisbn.get_registrant_element("9788535902778") // -> Ok("359")
glisbn.get_publication_element("9788535902778") // -> Ok("0277")
}

API

FunctionDescription
is_valid(isbn)Validates an ISBN-10 or ISBN-13 (length, characters, check digit)
is_checkdigit_valid(isbn)Checks only the check digit of an ISBN
is_hyphens_correct(isbn)Checks whether an ISBN is correctly hyphenated
isbn10_checkdigit(isbn)Computes the check digit for an ISBN-10
isbn13_checkdigit(isbn)Computes the check digit for an ISBN-13
get_checkdigit(isbn)Returns the last (check) digit of a valid ISBN
isbn10_to_13(isbn)Converts an ISBN-10 to ISBN-13
isbn13_to_10(isbn)Converts an ISBN-13 (978-prefix only) to ISBN-10
hyphenate(isbn)Returns a correctly hyphenated ISBN
get_prefix(isbn)Returns the group prefix (e.g. "978-85")
get_publisher_zone(isbn)Returns the publisher language/region name
get_registrant_element(isbn)Returns the registrant (publisher) element
get_publication_element(isbn)Returns the publication element

Errors are returned as Result(_, IsbnError) where IsbnError is either InvalidIsbn or RegistrantNotFound.

Further documentation can be found at https://hexdocs.pm/glisbn.

Development

gleam test # Run the tests
gleam shell # Run an Erlang shell