glisbn

Package Version Hex 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
Search Document