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
use base 'Declare::Constraints::Simple::Library::Numericals';
# 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
overridden 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.