Rechercher une page de manuel
Declare::Constraints::Simple::Library::Base.3pm
Langue: en
Version: 2006-09-11 (fedora - 01/12/10)
Section: 3 (Bibliothèques de fonctions)
Sommaire
- NAME
- SYNOPSIS
- DESCRIPTION
- METHODS
- HELPER FUNCTIONS
- constraint($name, $code)
- _result($bool, $msg)
- _false($msg)
- _true()
- _info($info)
- _apply_checks($value, \@constraints, [$info])
- _listify($value)
- _with_message($msg, $closure, @args)
- _with_scope($scope_name, $constraint, @args)
- _set_result($scope, $name, $result)
- _get_result($scope, $name)
- _has_result($scope, $name)
- SEE ALSO
- AUTHOR
- LICENSE AND COPYRIGHT
NAME
Declare::Constraints::Simple::Library::Base - Library Base ClassSYNOPSIS
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 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::LibraryAUTHOR
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.Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre