Brasilapi.Utils.Isbn (BrasilAPI v0.1.5)
View SourceUtilities for ISBN (International Standard Book Number) handling.
This module provides functions to validate, sanitize, and format ISBN numbers for use across the BrasilAPI client library.
ISBN Formats
Supports both ISBN-10 (obsolete) and ISBN-13 (current) formats:
- ISBN-10: 10 digits (e.g., "8545702876")
- ISBN-13: 13 digits (e.g., "9788545702870")
- Both formats accept dashes for formatting (e.g., "978-85-457-0287-0")
Validation Approach
This module provides lightweight validation:
- Only validates 10 or 13-digit length and numeric characters
- Accepts formatted strings with dashes and plain strings
- Automatically removes dashes for clean ISBN strings
For complete ISBN validation with checksum verification, use a dedicated library.
Summary
Functions
Formats an ISBN string with standard formatting.
Removes all formatting from an ISBN string, keeping only digits.
Sanitizes and validates an ISBN number.
Validates if an ISBN string contains only digits and has correct length.
Functions
Formats an ISBN string with standard formatting.
Takes a 10 or 13-digit ISBN string and applies standard formatting with dashes.
Parameters
isbn
- 10 or 13-digit ISBN string
Examples
iex> Brasilapi.Utils.Isbn.format("9788545702870")
"978-85-457-0287-0"
iex> Brasilapi.Utils.Isbn.format("8545702876")
"85-457-0287-6"
Removes all formatting from an ISBN string, keeping only digits.
Parameters
isbn
- Formatted or unformatted ISBN string
Examples
iex> Brasilapi.Utils.Isbn.remove_formatting("978-85-457-0287-0")
"9788545702870"
iex> Brasilapi.Utils.Isbn.remove_formatting("9788545702870")
"9788545702870"
Sanitizes and validates an ISBN number.
Accepts ISBN as string (formatted or unformatted) in both ISBN-10 and ISBN-13 formats. Returns a sanitized ISBN string if valid, or an error if invalid.
Parameters
isbn
- ISBN as string
Examples
iex> Brasilapi.Utils.Isbn.sanitize_and_validate("978-85-457-0287-0")
{:ok, "9788545702870"}
iex> Brasilapi.Utils.Isbn.sanitize_and_validate("9788545702870")
{:ok, "9788545702870"}
iex> Brasilapi.Utils.Isbn.sanitize_and_validate("85-457-0287-6")
{:ok, "8545702876"}
iex> Brasilapi.Utils.Isbn.sanitize_and_validate("8545702876")
{:ok, "8545702876"}
iex> Brasilapi.Utils.Isbn.sanitize_and_validate("123")
{:error, %{message: "Invalid ISBN format. Must be 10 or 13 digits."}}
iex> Brasilapi.Utils.Isbn.sanitize_and_validate("12345678901234")
{:error, %{message: "Invalid ISBN format. Must be 10 or 13 digits."}}
Validates if an ISBN string contains only digits and has correct length.
This is a simpler validation that only checks format without sanitization.
Parameters
isbn
- ISBN string to validate
Examples
iex> Brasilapi.Utils.Isbn.valid_format?("9788545702870")
true
iex> Brasilapi.Utils.Isbn.valid_format?("8545702876")
true
iex> Brasilapi.Utils.Isbn.valid_format?("123")
false
iex> Brasilapi.Utils.Isbn.valid_format?("12345678901234")
false