X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FUtil%2FTypeConstraints.pm;h=e05b870facd1ce7155b0c7d6b67419a7d5ba6ba6;hb=7e0e6837dcef39d945629cb04d5f4d7619b08034;hp=f309ec797488194e67e514c85ce189d306016c69;hpb=78a4b12980d68fdfeec7b5289e7203771a6e73d6;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Util/TypeConstraints.pm b/lib/Mouse/Util/TypeConstraints.pm index f309ec7..e05b870 100644 --- a/lib/Mouse/Util/TypeConstraints.pm +++ b/lib/Mouse/Util/TypeConstraints.pm @@ -17,6 +17,7 @@ Mouse::Exporter->setup_import_methods( coerce find_type_constraint + register_type_constraint )], ); @@ -82,13 +83,13 @@ $TYPE{HashRef} {constraint_generator} = \&_parameterize_HashRef_for; # sugars -sub as ($) { (as => $_[0]) } -sub where (&) { (where => $_[0]) } -sub message (&) { (message => $_[0]) } -sub optimize_as (&) { (optimize_as => $_[0]) } +sub as ($) { (as => $_[0]) } ## no critic +sub where (&) { (where => $_[0]) } ## no critic +sub message (&) { (message => $_[0]) } ## no critic +sub optimize_as (&) { (optimize_as => $_[0]) } ## no critic sub from { @_ } -sub via (&) { $_[0] } +sub via (&) { $_[0] } ## no critic # type utilities @@ -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); @@ -406,7 +417,7 @@ Mouse::Util::TypeConstraints - Type constraint system for Mouse =head1 VERSION -This document describes Mouse version 0.50_08 +This document describes Mouse version 0.63 =head2 SYNOPSIS