X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouseX%2FTypes.pm;h=68003a8c7401f75ab8af01aa3af522d62a9e8278;hb=3b46bd4991dea7ead4e7f52a089222d24554e2bd;hp=2af18239f8649389ff055c4cc5a1484dfd754ddb;hpb=5439cf977dec83dafef4ee1cc990e7850d308cd0;p=gitmo%2FMouse.git diff --git a/lib/MouseX/Types.pm b/lib/MouseX/Types.pm index 2af1823..68003a8 100644 --- a/lib/MouseX/Types.pm +++ b/lib/MouseX/Types.pm @@ -2,7 +2,8 @@ package MouseX::Types; use strict; use warnings; -require Mouse::TypeRegistry; +require Mouse::Util::TypeConstraints; +use MouseX::Types::TypeDecorator; sub import { my $class = shift; @@ -16,19 +17,22 @@ sub import { if (defined $args{'-declare'} && ref($args{'-declare'}) eq 'ARRAY') { my $storage = $caller->type_storage($caller); for my $name (@{ $args{'-declare'} }) { - $storage->{$name} = "$caller\::$name"; - *{"$caller\::$name"} = sub () { $caller->type_storage->{$name} }; + my $obj = $storage->{$name} = "$caller\::$name"; + *{"$caller\::$name"} = sub () { $obj }; } } - return Mouse::TypeRegistry->import( callee => $caller ); + return Mouse::Util::TypeConstraints->import( callee => $caller ); } sub _import { my($type_class, $pkg, @types) = @_; no strict 'refs'; for my $name (@types) { - *{"$pkg\::$name"} = sub () { $type_class->type_storage->{$name} } + my $obj = $type_class->type_storage->{$name}; + $obj = $type_class->type_storage->{$name} = MouseX::Types::TypeDecorator->new($obj) + unless ref($obj); + *{"$pkg\::$name"} = sub () { $obj }; } } @@ -44,7 +48,7 @@ sub _import { =head1 NAME -Mouse - Organise your Mouse types in libraries +MouseX::Types - Organise your Mouse types in libraries =head1 SYNOPSIS @@ -56,8 +60,6 @@ Mouse - Organise your Mouse types in libraries use MouseX::Types -declare => [qw( PositiveInt NegativeInt - ArrayRefOfPositiveInt ArrayRefOfAtLeastThreeNegativeInts - LotsOfInnerConstraints StrOrArrayRef )]; # import builtin types @@ -79,23 +81,6 @@ Mouse - Organise your Mouse types in libraries from Int, via { 1 }; - # with parameterized constraints. - - subtype ArrayRefOfPositiveInt, - as ArrayRef[PositiveInt]; - - subtype ArrayRefOfAtLeastThreeNegativeInts, - as ArrayRef[NegativeInt], - where { scalar(@$_) > 2 }; - - subtype LotsOfInnerConstraints, - as ArrayRef[ArrayRef[HashRef[Int]]]; - - # with TypeConstraint Unions - - subtype StrOrArrayRef, - as Str|ArrayRef; - 1; =head2 Usage