MooseX::Meta::TypeConstraint::Structured - Structured type constraints.
A structure is a set of Moose::Meta::TypeConstraint that are 'aggregated' in such a way as that they are all applied to an incoming list of arguments. The idea here is that a Type Constraint could be something like, "An Int followed by an Int and then a Str" and that this could be done so with a declaration like:
Tuple[Int,Int,Str]; ## Example syntax
So a structure is a list of Type constraints (the "Int,Int,Str" in the above example) which are intended to function together.
This class defines the following attributes.
A list of Moose::Meta::TypeConstraint objects.
A subref or closure that contains the way we validate incoming values against a set of type constraints.
This class defines the following methods.
Messing with validate so that we can support niced error messages.
Given some type constraints, use them to generate validation rules for an ref of values (to be passed at check time)
Given a ref of type constraints, create a structured type.
This returns a CODEREF which generates a suitable constraint generator. Not user servicable, you'll never call this directly.
hook into compile_type_constraint so we can set the correct validation rules.
modifier to make sure we get the constraint_generator
Override the base class behavior.
Checks to see if the internal type constraints are equal.
Give you a better peek into what's causing the error. For now we stringify the incoming deep value with Devel::PartialDump and pass that on to either your custom error message or the default one. In the future we'll try to provide a more complete stack trace of the actual offending elements
The following modules or resources may be of interest.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.