better test for coercing parameterized type, now passes
[gitmo/MooseX-Types.git] / lib / MooseX / Types.pm
index 7c9d129..9528d36 100644 (file)
@@ -20,7 +20,7 @@ use Scalar::Util                      'reftype';
 use namespace::clean -except => [qw( meta )];
 
 use 5.008;
-our $VERSION = '0.13';
+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<Moose::Util::TypeConstraints>,
 L<MooseX::Types::Moose>,
 L<Sub::Exporter>
 
-=head1 AUTHOR AND COPYRIGHT
+=head1 ACKNOWLEDGEMENTS
+
+Many thanks to the C<#moose> cabal on C<irc.perl.org>.
+
+=head1 AUTHOR
+
+Robert "phaylon" Sedlacek <rs@474.at>
+
+=head1 CONTRIBUTORS
+
+jnapiorkowski: John Napiorkowski <jjnapiork@cpan.org>
+
+caelum: Rafael Kitover <rkitover@cpan.org>
 
-Robert 'phaylon' Sedlacek C<E<lt>rs@474.atE<gt>>, with many thanks to
-the C<#moose> cabal on C<irc.perl.org>.
+rafl: Florian Ragwitz <rafl@debian.org>
 
-Additional features by John Napiorkowski (jnapiorkowski) <jjnapiork@cpan.org>.
+=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.