NAME
Declare::Constraints::Simple::Library::Base - Library Base Class
SYNOPSIS
package
My::Constraint::Library;
use
warnings;
use
strict;
# this installs the base class and helper functions
use
Declare::Constraints::Simple-Library;
# we can also automagically provide other libraries
# to the importer
# with this we define a constraint to check a value
# against a serial number regular expression
constraint
'SomeSerial'
,
sub
{
return
sub
{
return
_true
if
$_
[0] =~ /\d{3}-\d{3}-\d{4}/;
return
_false(
'Not in SomeSerial format'
);
};
};
1;
DESCRIPTION
This base class contains the common library functionalities. This includes helper functions and install mechanisms.
METHODS
install_into($target)
Installs the base classes and helper functions into the $target
namespace. The %CONSTRAINT_GENERATORS
package variable of that class will be used as storage for it's constraints.
fetch_constraint_declarations()
Class method. Returns all constraints registered to the class.
fetch_constraint_generator($name)
Class method. Returns the constraint generator code reference registered under $name
. The call will raise a croak
if the generator could not be found.
prepare_generator($constraint_name, $generator)
Class method. This wraps the $generator
in a closure that provides stack and failure-collapsing decisions.
add_constraint_generator($name, $code)
Class method. The actual registration method, used by constraint
.
HELPER FUNCTIONS
Note that some of the helper functions are prefixed with _
. Although this means they are internal functions, it is ok to call them, as they have a fixed API. They are not distribution internal, but library internal, and only intended to be used from inside constraints.
constraint($name, $code)
constraint
'Foo'
,
sub
{ ... };
This registers a new constraint in the calling library. Note that constraints have to return result objects. To do this, you can use the helper functions "_result($bool, $msg", _true() and _false($msg).
_result($bool, $msg)
Returns a new result object. It's validity flag will depend on the $bool
argument. The $msg
argument is the error message to use on failure.
_false($msg)
Returns a non-valid result object, with it's message set to $msg
.
_true()
Returns a valid result object.
_info($info)
Sets the current failure info to use in the stack info part.
_apply_checks($value, \@constraints, [$info])
This applies all constraints in the \@constraints
array reference to the passed $value
. You can optionally specify an $info
string to be used in the stack of the newly created non-valid results.
_listify($value)
Puts $value
into an array reference and returns it, if it isn't already one.
_with_message($msg, $closure, @args)
This is the internal version of the general Message
constraint. It sets the current overriden message to $msg
and executes the $closure
with @args
as arguments.
_with_scope($scope_name, $constraint, @args)
Applies the $constraint
to @args
in a newly created scope named by $scope_name
.
_set_result($scope, $name, $result)
Stores the given $result
unter the name $name
in $scope
.
_get_result($scope, $name)
Returns the result named $name
from $scope
.
_has_result($scope, $name)
Returns true only if such a result was registered already.
SEE ALSO
Declare::Constraints::Simple, Declare::Constraints::Simple::Library
AUTHOR
Robert 'phaylon' Sedlacek <phaylon@dunkelheit.at>
LICENSE AND COPYRIGHT
This module is free software, you can redistribute it and/or modify it under the same terms as perl itself.