logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Moose::Meta::TypeConstraint - The Moose Type Constraint metaclass

Authors

       •   Stevan Little <stevan@cpan.org>

       •   Dave Rolsky <autarch@urth.org>

       •   Jesse Luehrs <doy@cpan.org>

       •   Shawn M Moore <sartak@cpan.org>

       •   יובל קוג'מן (Yuval Kogman) <nothingmuch@woobling.org>

       •   Karen Etheridge <ether@cpan.org>

       •   Florian Ragwitz <rafl@debian.org>

       •   Hans Dieter Pearcey <hdp@cpan.org>

       •   Chris Prather <chris@prather.org>

       •   Matt S Trout <mstrout@cpan.org>

Bugs

       See "BUGS" in Moose for details on reporting bugs.

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.

   $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 isvalid 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->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.

Name

       Moose::Meta::TypeConstraint - The Moose Type Constraint metaclass

Version

       version 2.2207

See Also