NAME¶
Moose::Meta::TypeConstraint - The Moose Type Constraint metaclass
VERSION¶
version 2.0603
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.
- •
- inlined
A subroutine which returns a string suitable for inlining this type
constraint. It will be called as a method on the type constraint object,
and will receive a single additional parameter, a variable name to be
tested (usually "$_" or "$_[0]".
This is optional.
- •
- inline_environment
A hash reference of variables to close over. The keys are variables names,
and the values are references to the variables.
- •
- optimized
This option is deprecated.
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" and "is_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 explicit "undef". If
the type is not valid, we call "$self->get_message($value)"
internally to generate an error message.
- $constraint->assert_valid($value)
- Like "check" and "validate", 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
- Returns all of the types parents as an list of type
constraint objects.
- $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->can_be_inlined
- Returns true if this type constraint can be inlined. A type
constraint which subtypes an inlinable constraint and does not add an
additional constraint "inherits" its parent type's
inlining.
- $constraint->hand_optimized_type_constraint
- This method is deprecated.
Returns the type's hand optimized constraint, as provided to the constructor
via the "optimized" option.
- $constraint->has_hand_optimized_type_constraint
- This method is deprecated.
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. The "parent" 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¶
Moose is maintained by the Moose Cabal, along with the help of many
contributors. See "CABAL" in Moose and "CONTRIBUTORS" in
Moose for details.
COPYRIGHT AND LICENSE¶
This software is copyright (c) 2012 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.