X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FTypeConstraint%2FRegistry.pm;h=f71fcfac46d669dc0a555afba929fad736794c52;hb=0aca6c894339607ab07bc40a508ab47129f0f1ec;hp=ba5293b24f47d05b81e5f11fc08e0ab7167c3648;hpb=59f5bbde66d61d15b684be88d138fd798ba851d0;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/TypeConstraint/Registry.pm b/lib/Moose/Meta/TypeConstraint/Registry.pm index ba5293b..f71fcfa 100644 --- a/lib/Moose/Meta/TypeConstraint/Registry.pm +++ b/lib/Moose/Meta/TypeConstraint/Registry.pm @@ -6,9 +6,8 @@ use warnings; use metaclass; use Scalar::Util 'blessed'; -use Carp 'confess'; # FIXME Moose->throw_error -our $VERSION = '0.64'; +our $VERSION = '0.74'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -44,8 +43,12 @@ sub get_type_constraint { sub add_type_constraint { my ($self, $type) = @_; - confess("No type supplied / type is not a valid type constraint") - unless ($type && blessed $type && $type->isa('Moose::Meta::TypeConstraint')); + + unless ( $type && blessed $type && $type->isa('Moose::Meta::TypeConstraint') ) { + require Moose; + Moose->throw_error("No type supplied / type is not a valid type constraint"); + } + $self->type_constraints->{$type->name} = $type; } @@ -71,42 +74,71 @@ Moose::Meta::TypeConstraint::Registry - registry for type constraints =head1 DESCRIPTION -This module is currently only use internally by L. -It can be used to create your own private type constraint registry as well, but -the details of that are currently left as an exercise to the reader. (One hint: -You can use the 'parent_registry' feature to connect your private version with the -base Moose registry and base Moose types will automagically be found too). +This class is a registry that maps type constraint names to +L objects. + +Currently, it is only used internally by +L, which creates a single global +registry. + +=head1 INHERITANCE + +C is a subclass of +L. =head1 METHODS =over 4 -=item B +=item B<< Moose::Meta::TypeConstraint::Registry->new(%options) >> + +This creates a new registry object based on the provided C<%options>: + +=over 8 + +=item * parent_registry + +This is an optional L +object. + +=item * type_constraints + +This is hash reference of type names to type objects. This is +optional. Constraints can be added to the registry after it is +created. + +=back + +=item B<< $registry->get_parent_registry >> + +Returns the registry's parent registry, if it has one. + +=item B<< $registry->has_parent_registry >> + +Returns true if the registry has a parent. -=item B +=item B<< $registry->set_parent_registry($registry) >> -=item B +Sets the parent registry. -=item B - -=item B +=item B<< $registry->get_type_constraint($type_name) >> -=item B +This returns the L object from the +registry for the given name, if one exists. -=item B +=item B<< $registry->has_type_constraint($type_name) >> -=item B +Returns true if the registry has a type of the given name. -Returns a type constraint object from the registry by name. Will return -false if the supplied type name cannot be found. +=item B<< $registry->add_type_constraint($type) >> -=item B +Adds a new L object to the registry. -Adds a type constraint object to the registry. Will throw an exception if -no type is supplied, or the supplied object does not inherit from -L +=item B<< $registry->find_type_constraint($type_name) >> -=item B +This method looks in the current registry for the named type. If the +type is not found, then this method will look in the registry's +parent, if it has one. =back @@ -122,7 +154,7 @@ Stevan Little Estevan@iinteractive.comE =head1 COPYRIGHT AND LICENSE -Copyright 2006-2008 by Infinity Interactive, Inc. +Copyright 2006-2009 by Infinity Interactive, Inc. L