| Moose documentation | Contained in the Moose distribution. |
Moose::Meta::TypeConstraint::Registry - registry for type constraints
version 2.0010
This class is a registry that maps type constraint names to Moose::Meta::TypeConstraint objects.
Currently, it is only used internally by Moose::Util::TypeConstraints, which creates a single global registry.
Moose::Meta::TypeConstraint::Registry is a subclass of
Class::MOP::Object.
This creates a new registry object based on the provided %options:
This is an optional Moose::Meta::TypeConstraint::Registry object.
This is hash reference of type names to type objects. This is optional. Constraints can be added to the registry after it is created.
Returns the registry's parent registry, if it has one.
Returns true if the registry has a parent.
Sets the parent registry.
This returns the Moose::Meta::TypeConstraint object from the registry for the given name, if one exists.
Returns true if the registry has a type of the given name.
Adds a new Moose::Meta::TypeConstraint object to the registry.
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.
See BUGS in Moose for details on reporting bugs.
Stevan Little <stevan@iinteractive.com>
This software is copyright (c) 2011 by Infinity Interactive, Inc..
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| Moose documentation | Contained in the Moose distribution. |
package Moose::Meta::TypeConstraint::Registry; BEGIN { $Moose::Meta::TypeConstraint::Registry::AUTHORITY = 'cpan:STEVAN'; } BEGIN { $Moose::Meta::TypeConstraint::Registry::VERSION = '2.0010'; } use strict; use warnings; use metaclass; use Scalar::Util 'blessed'; use base 'Class::MOP::Object'; __PACKAGE__->meta->add_attribute('parent_registry' => ( reader => 'get_parent_registry', writer => 'set_parent_registry', predicate => 'has_parent_registry', )); __PACKAGE__->meta->add_attribute('type_constraints' => ( reader => 'type_constraints', default => sub { {} } )); sub new { my $class = shift; my $self = $class->_new(@_); return $self; } sub has_type_constraint { my ($self, $type_name) = @_; ($type_name and exists $self->type_constraints->{$type_name}) ? 1 : 0 } sub get_type_constraint { my ($self, $type_name) = @_; return unless defined $type_name; $self->type_constraints->{$type_name} } sub add_type_constraint { my ($self, $type) = @_; 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; } sub find_type_constraint { my ($self, $type_name) = @_; return $self->get_type_constraint($type_name) if $self->has_type_constraint($type_name); return $self->get_parent_registry->find_type_constraint($type_name) if $self->has_parent_registry; return; } 1; # ABSTRACT: registry for type constraints
__END__