This is an automated email from the git hooks/post-receive script. js pushed a commit to branch master in repository libtypes-uri-perl.
commit f23dded75bd4b0fbfba3c1a204b0b42667565c50 Author: Toby Inkster <[email protected]> Date: Sat Sep 27 19:12:06 2014 +0100 add an Iri type constraint; same as Uri but uses kasei's IRI class; coercions between Uri and Iri --- lib/Types/URI.pm | 44 ++++++++++++++++++++++++++++++++++++++++++-- t/03iri.t | 15 +++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/lib/Types/URI.pm b/lib/Types/URI.pm index 876e802..62cba22 100644 --- a/lib/Types/URI.pm +++ b/lib/Types/URI.pm @@ -13,7 +13,7 @@ use URI::data; use URI::WithBase; use URI::FromHash; -use Type::Library -base, -declare => qw( Uri FileUri DataUri ); +use Type::Library -base, -declare => qw( Uri FileUri DataUri Iri ); use Types::Path::Tiny qw( Path ); use Types::Standard qw( InstanceOf ScalarRef HashRef Str ); @@ -24,6 +24,13 @@ my $TrineNS = InstanceOf['RDF::Trine::Namespace']; my $XmlNS = InstanceOf['XML::Namespace']; __PACKAGE__->meta->add_type({ + name => Iri, + parent => InstanceOf['IRI'], + # Need to define coercions below to break circularity of + # Uri and Iri. +}); + +__PACKAGE__->meta->add_type({ name => Uri, parent => InstanceOf[qw/ URI URI::WithBase /], coercion => [ @@ -35,9 +42,22 @@ __PACKAGE__->meta->add_type({ $TrineNode ,=> q{ "URI"->new($_->uri_value) }, $TrineNS ,=> q{ "URI"->new($_->uri->uri_value) }, $XmlNS ,=> q{ "URI"->new($_->uri) }, + Iri ,=> q{ "URI"->new($_->as_string) }, ], }); +Iri->coercion->add_type_coercions( + Uuid ,=> q{ do { use IRI (); "IRI"->new("urn:uuid:$_") } }, + Str ,=> q{ do { use IRI (); "IRI"->new($_) } }, + Path ,=> q{ do { use IRI (); my $u = "URI::file"->new($_); "IRI"->new($u->as_string) } }, + ScalarRef ,=> q{ do { use IRI (); my $u = "URI"->new("data:"); $u->data($$_); "IRI"->new($u->as_string) } }, + HashRef ,=> q{ do { use IRI (); "IRI"->new(URI::FromHash::uri(%$_)) } }, + $TrineNode ,=> q{ do { use IRI (); "IRI"->new($_->uri_value) } }, + $TrineNS ,=> q{ do { use IRI (); "IRI"->new($_->uri->uri_value) } }, + $XmlNS ,=> q{ do { use IRI (); "IRI"->new($_->uri) } }, + Uri ,=> q{ do { use IRI (); "IRI"->new($_->as_string) } }, +); + __PACKAGE__->meta->add_type({ name => FileUri, parent => Uri, @@ -50,6 +70,7 @@ __PACKAGE__->meta->add_type({ $TrineNode ,=> q{ "URI"->new($_->uri_value) }, $TrineNS ,=> q{ "URI"->new($_->uri->uri_value) }, $XmlNS ,=> q{ "URI"->new($_->uri) }, + Iri ,=> q{ "URI"->new($_->as_string) }, ], }); @@ -65,6 +86,7 @@ __PACKAGE__->meta->add_type({ $TrineNode ,=> q{ "URI"->new($_->uri_value) }, $TrineNS ,=> q{ "URI"->new($_->uri->uri_value) }, $XmlNS ,=> q{ "URI"->new($_->uri) }, + Iri ,=> q{ "URI"->new($_->as_string) }, ], }); @@ -132,6 +154,10 @@ Uses L<URI::data/new>. Coerces using L<URI::FromHash>. +=item from C<Iri> + +Uses L<URI/new>. + =item from L<RDF::Trine::Node::Resource>, L<RDF::Trine::Namespace>, L<XML::Namespace> Uses L<URI/new>. @@ -156,6 +182,10 @@ Uses L<URI::file/new>. (See L<Types::Path::Tiny>.) Coerces using L<URI::FromHash>. +=item from C<Iri> + +Uses L<URI/new>. + =item from L<RDF::Trine::Node::Resource>, L<RDF::Trine::Namespace>, L<XML::Namespace> Uses L<URI/new>. @@ -180,12 +210,21 @@ Uses L<URI::data/new>. Coerces using L<URI::FromHash>. +=item from C<Iri> + +Uses L<URI/new>. + =item from L<RDF::Trine::Node::Resource>, L<RDF::Trine::Namespace>, L<XML::Namespace> Uses L<URI/new>. =back +=item C<Iri> + +A class type for L<IRI>. Coercions as per C<Uri> above, plus can coerce +from C<Uri>. + =back =head1 BUGS @@ -201,7 +240,8 @@ L<URI>, L<URI::file>, L<URI::data>, L<URI::FromHash>, -L<RDF::Trine::Node::Resource>. +L<RDF::Trine::Node::Resource>, +L<IRI>. L<Types::UUID>, L<Types::Path::Tiny>, diff --git a/t/03iri.t b/t/03iri.t new file mode 100644 index 0000000..cd47684 --- /dev/null +++ b/t/03iri.t @@ -0,0 +1,15 @@ +use strict; +use warnings; +use Test::More; +use Test::Requires { 'IRI' => '0.004' }; +use Types::URI qw( to_Uri to_Iri ); + +my $uri = to_Uri("IRI"->new('http://www.example.net/')); +isa_ok($uri, 'URI'); +is("$uri", 'http://www.example.net/'); + +my $iri = to_Iri($uri); +isa_ok($iri, 'IRI'); +is($iri->as_string, 'http://www.example.net/'); + +done_testing; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libtypes-uri-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits
