Implement Mouse::Util::TypeConstraints::register_type_constraint()
Vincent Pit [Tue, 20 Jul 2010 10:20:36 +0000 (19:20 +0900)]
lib/Mouse/Util/TypeConstraints.pm

index ef8bd2f..3289de6 100644 (file)
@@ -17,6 +17,7 @@ Mouse::Exporter->setup_import_methods(
         coerce
 
         find_type_constraint
+        register_type_constraint
     )],
 );
 
@@ -367,6 +368,16 @@ sub find_type_constraint {
     return $TYPE{$spec};
 }
 
+sub register_type_constraint {
+    my($constraint) = @_;
+    Carp::croak("No type supplied / type is not a valid type constraint")
+        unless Mouse::Util::is_a_type_constraint($constraint);
+    my $name = $constraint->name;
+    Carp::croak("can't register an unnamed type constraint")
+        unless defined $name;
+    return $TYPE{$name} = $constraint;
+}
+
 sub find_or_parse_type_constraint {
     my($spec) = @_;
     return $spec if Mouse::Util::is_a_type_constraint($spec);