=head1 Name

lua-uri-urn-isbn - ISBN URN support for Lua URI library

=head1 Description

The class C<uri.urn.isbn> is used for URNs with the NID 'isbn', that is, URIs
which begin C<urn:isbn:>.  It inherits from the L<uri.urn|lua-uri-urn(3)>
class.

Some of the functionality of this class depends on the L<lua-isbn(3)> module
being installed, although it can be used without that.  In particular, if the
module is installed then full checksum validation of the ISBN is performed,
whereas without it the ISBN is only checked for invalid characters.  The ISBN
value is normalized to include hyphens in the conventional places if the
lua-isbn module is installed (the exact hyphen positions depend on the number),
but without it all hyphens are removed instead.  If the ISBN ends in a checksum
of 'x', then it folded to uppercase.

=head1 Methods

All the methods defined in L<lua-uri(3)> and L<lua-uri-urn(3)> are supported,
as well as the following:

=over

=item uri:isbn(...)

Get or set the ISBN value as an object of the type provided by the C<isbn>
class in the L<lua-isbn(3)> library.  This method will throw an exception
if this library is not installed, or if the object supplied is not a valid
ISBN object (it will currently accept a string, but you shouldn't rely on
this).

=item uri:isbn_digits(...)

Get or set the ISBN value as a string containing just the numbers (and
possibly an 'X' as the last digit).  There will be no hyphens in this value,
and it should be exactly 10 or 13 characters long.

If a new value is provided then it must not be nil, and will be validated in
the normal way, causing an exception if it is invalid.

=back

=head1 References

This implements the 'isbn' NID defined in L<RFC 3187>, and is consistent
with the same NID suggested in L<RFC 2288>.

=for comment
vi:ts=4 sw=4 expandtab
