Finish renaming Mouse::TypeRegistry to Mouse::Util::TypeConstraints
[gitmo/Mouse.git] / lib / MouseX / Types.pm
index 2af1823..68003a8 100644 (file)
@@ -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