X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FTypes.pm;h=9528d361355c03070f224d3a17abd3e093e4b903;hb=d46ddd3c6468ef28ced63b72d6285cc2f13e04a7;hp=729450c9157b2cc714209a9f0e9757bcb8eebbef;hpb=b55332a8c759716048630d99e936c3817d68de73;p=gitmo%2FMooseX-Types.git diff --git a/lib/MooseX/Types.pm b/lib/MooseX/Types.pm index 729450c..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.16'; +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) @@ -575,6 +589,8 @@ jnapiorkowski: John Napiorkowski caelum: Rafael Kitover +rafl: Florian Ragwitz + =head1 COPYRIGHT & LICENSE Copyright (c) 2007-2009 Robert Sedlacek