NAME
Moose::Meta::TypeConstraint - The Moose Type Constraint metaclass
VERSION
version 2.0002
DESCRIPTION
This class represents a single type constraint. Moose's built-in type constraints, as well as constraints you define, are all stored in a Moose::Meta::TypeConstraint::Registry object as objects of this class.
INHERITANCE
Moose::Meta::TypeConstraint
is a subclass of Class::MOP::Object.
METHODS
- Moose::Meta::TypeConstraint->new(%options)
-
This creates a new type constraint based on the provided
%options
:name
The constraint name. If a name is not provided, it will be set to "__ANON__".
parent
A
Moose::Meta::TypeConstraint
object which is the parent type for the type being created. This is optional.constraint
This is the subroutine reference that implements the actual constraint check. This defaults to a subroutine which always returns true.
message
A subroutine reference which is used to generate an error message when the constraint fails. This is optional.
coercion
A Moose::Meta::TypeCoercion object representing the coercions to the type. This is optional.
optimized
This is a variant of the
constraint
parameter that is somehow optimized. Typically, this means incorporating both the type's constraint and all of its parents' constraints into a single subroutine reference.
- $constraint->equals($type_name_or_object)
-
Returns true if the supplied name or type object is the same as the current type.
- $constraint->is_subtype_of($type_name_or_object)
-
Returns true if the supplied name or type object is a parent of the current type.
- $constraint->is_a_type_of($type_name_or_object)
-
Returns true if the given type is the same as the current type, or is a parent of the current type. This is a shortcut for checking
equals
andis_subtype_of
. - $constraint->coerce($value)
-
This will attempt to coerce the value to the type. If the type does not have any defined coercions this will throw an error.
If no coercion can produce a value matching
$constraint
, the original value is returned. - $constraint->assert_coerce($value)
-
This method behaves just like
coerce
, but if the result is not valid according to$constraint
, an error is thrown. - $constraint->check($value)
-
Returns true if the given value passes the constraint for the type.
- $constraint->validate($value)
-
This is similar to
check
. However, if the type is valid then the method returns an explicitundef
. If the type is not valid, we call$self->get_message($value)
internally to generate an error message. - $constraint->assert_valid($value)
-
Like
check
andvalidate
, this method checks whether$value
is valid under the constraint. If it is, it will return true. If it is not, an exception will be thrown with the results of$self->get_message($value)
. - $constraint->name
-
Returns the type's name, as provided to the constructor.
- $constraint->parent
-
Returns the type's parent, as provided to the constructor, if any.
- $constraint->has_parent
-
Returns true if the type has a parent type.
- $constraint->parents
-
A synonym for
parent
. This is useful for polymorphism with types that can have more than one parent. - $constraint->constraint
-
Returns the type's constraint, as provided to the constructor.
- $constraint->get_message($value)
-
This generates a method for the given value. If the type does not have an explicit message, we generate a default message.
- $constraint->has_message
-
Returns true if the type has a message.
- $constraint->message
-
Returns the type's message as a subroutine reference.
- $constraint->coercion
-
Returns the type's Moose::Meta::TypeCoercion object, if one exists.
- $constraint->has_coercion
-
Returns true if the type has a coercion.
- $constraint->hand_optimized_type_constraint
-
Returns the type's hand optimized constraint, as provided to the constructor via the
optimized
option. - $constraint->has_hand_optimized_type_constraint
-
Returns true if the type has an optimized constraint.
- $constraint->create_child_type(%options)
-
This returns a new type constraint of the same class using the provided
%options
. Theparent
option will be the current type.This method exists so that subclasses of this class can override this behavior and change how child types are created.
BUGS
See "BUGS" in Moose for details on reporting bugs.
AUTHOR
Stevan Little <stevan@iinteractive.com>
COPYRIGHT AND LICENSE
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.