X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FTypes.pm;h=9528d361355c03070f224d3a17abd3e093e4b903;hb=d46ddd3c6468ef28ced63b72d6285cc2f13e04a7;hp=e51a0c08e2bcf5d7c1df674680e9dfa47b4cbf0c;hpb=1150ce7231722f60b82d2b8399cd16671102f26d;p=gitmo%2FMooseX-Types.git diff --git a/lib/MooseX/Types.pm b/lib/MooseX/Types.pm index e51a0c0..9528d36 100644 --- a/lib/MooseX/Types.pm +++ b/lib/MooseX/Types.pm @@ -20,7 +20,7 @@ use Scalar::Util 'reftype'; use namespace::clean -except => [qw( meta )]; use 5.008; -our $VERSION = '0.12'; +our $VERSION = '0.17'; my $UndefMsg = q{Action for type '%s' not yet defined in library '%s'}; =head1 SYNOPSIS @@ -35,6 +35,7 @@ my $UndefMsg = q{Action for type '%s' not yet defined in library '%s'}; PositiveInt NegativeInt ArrayRefOfPositiveInt ArrayRefOfAtLeastThreeNegativeInts LotsOfInnerConstraints StrOrArrayRef + MyDateTime )]; # import builtin types @@ -73,9 +74,15 @@ my $UndefMsg = q{Action for type '%s' not yet defined in library '%s'}; subtype StrOrArrayRef, as Str|ArrayRef; + # class types + class_type 'DateTime'; - coerce 'DateTime', + # or better + + class_type MyDateTime, { class => 'DateTime' }; + + coerce MyDateTime, from HashRef, via { DateTime->new(%$_) }; @@ -418,9 +425,16 @@ it with @args. =cut sub create_arged_type_constraint { - my ($class, $name, @args) = @_; - my $type_constraint = Moose::Util::TypeConstraints::find_or_create_type_constraint("$name"); - return $type_constraint->parameterize(@args); + my ($class, $name, $arg) = @_; + + my $container_tc = + Moose::Util::TypeConstraints::find_or_create_type_constraint("$name"); + my $contained_tc = + Moose::Util::TypeConstraints::find_or_create_type_constraint("$arg"); + + my $tc_name = $container_tc->name . '[' . $contained_tc->name . ']'; + + return Moose::Util::TypeConstraints::find_or_create_type_constraint($tc_name); } =head2 create_base_type_constraint ($name) @@ -561,14 +575,25 @@ L, L, L -=head1 AUTHOR AND COPYRIGHT +=head1 ACKNOWLEDGEMENTS + +Many thanks to the C<#moose> cabal on C. + +=head1 AUTHOR + +Robert "phaylon" Sedlacek + +=head1 CONTRIBUTORS + +jnapiorkowski: John Napiorkowski + +caelum: Rafael Kitover -Robert 'phaylon' Sedlacek Crs@474.atE>, with many thanks to -the C<#moose> cabal on C. +rafl: Florian Ragwitz -Additional features by John Napiorkowski (jnapiorkowski) . +=head1 COPYRIGHT & LICENSE -=head1 LICENSE +Copyright (c) 2007-2009 Robert Sedlacek This program is free software; you can redistribute it and/or modify it under the same terms as perl itself.