X-Git-Url: http://git.maemo.org/git/?p=dh-make-perl;a=blobdiff_plain;f=dev%2Farm%2Fliburi-perl%2Fliburi-perl-1.35.dfsg.1%2FURI%2Furn%2Fisbn.pm;fp=dev%2Farm%2Fliburi-perl%2Fliburi-perl-1.35.dfsg.1%2FURI%2Furn%2Fisbn.pm;h=622b56c5a5a44c77af9547595aa4790ad993b8c1;hp=0000000000000000000000000000000000000000;hb=f477fa73365d491991707e7ed9217b48d6994551;hpb=da95c414033799c3a62606f299c3c00b5c77ca11 diff --git a/dev/arm/liburi-perl/liburi-perl-1.35.dfsg.1/URI/urn/isbn.pm b/dev/arm/liburi-perl/liburi-perl-1.35.dfsg.1/URI/urn/isbn.pm new file mode 100644 index 0000000..622b56c --- /dev/null +++ b/dev/arm/liburi-perl/liburi-perl-1.35.dfsg.1/URI/urn/isbn.pm @@ -0,0 +1,58 @@ +package URI::urn::isbn; # RFC 3187 + +require URI::urn; +@ISA=qw(URI::urn); + +use strict; +use Business::ISBN (); + + +sub _isbn { + my $nss = shift; + $nss = $nss->nss if ref($nss); + my $isbn = Business::ISBN->new($nss); + $isbn = undef if $isbn && !$isbn->is_valid; + return $isbn; +} + +sub _nss_isbn { + my $self = shift; + my $nss = $self->nss(@_); + my $isbn = _isbn($nss); + $isbn = $isbn->as_string if $isbn; + return($nss, $isbn); +} + +sub isbn { + my $self = shift; + my $isbn; + (undef, $isbn) = $self->_nss_isbn(@_); + return $isbn; +} + +sub isbn_publisher_code { + my $isbn = shift->_isbn || return undef; + return $isbn->publisher_code; +} + +sub isbn_country_code { + my $isbn = shift->_isbn || return undef; + return $isbn->country_code; +} + +sub isbn_as_ean { + my $isbn = shift->_isbn || return undef; + return $isbn->as_ean; +} + +sub canonical { + my $self = shift; + my($nss, $isbn) = $self->_nss_isbn; + my $new = $self->SUPER::canonical; + return $new unless $nss && $isbn && $nss ne $isbn; + $new = $new->clone if $new == $self; + $new->nss($isbn); + return $new; +} + +1;