Travis CI Badge Coverage Badge CPAN Badge Kwalitee Badge

Name

Data::Validation - Filter and validate data values

Version

Describes version v0.28.$Rev: 1 $ of Data::Validation

Synopsis

use Data::Validation;

sub check_field {
   my ($self, $config, $id, $value) = @_;

   my $dv_obj = $self->_build_validation_obj( $config );

   return $dv_obj->check_field( $id, $value );
}

sub check_form  {
   my ($self, $config, $form) = @_;

   my $dv_obj = $self->_build_validation_obj( $config );
   my $prefix = $config->{form_name}.q(.);

   return $dv_obj->check_form( $prefix, $form );
}

sub _build_validation_obj {
   my ($self, $config) = @_;

   return Data::Validation->new( {
      constraints => $config->{constraints} // {},
      fields      => $config->{fields}      // {},
      filters     => $config->{filters}     // {} } );
}

Description

This module implements filters and common constraints in builtin methods and uses a factory pattern to implement an extensible list of external filters and constraints

Data values are filtered first before testing against the constraints. The filtered data values are returned if they conform to the constraints, otherwise an exception is thrown

Configuration and Environment

Defines the following attributes;

constraints

Hash containing constraint attributes. Keys are the id values passed to "check_field". See Data::Validation::Constraints

fields

Hash containing field definitions. Keys are the id values passed to "check_field". Each field definition can contain a space separated list of filters to apply and a space separated list of constraints. Each constraint method must return true for the value to be accepted

The constraint method can also be a list of methods separated by | (pipe) characters. This has the effect of requiring only one of the constraints to be true

isMandatory isHexadecimal|isValidNumber

This constraint would require a value that was either hexadecimal or a valid number

filters

Hash containing filter attributes. Keys are the id values passed to "check_field". See Data::Validation::Filters

level

Positive integer defaults to 1. Used to select the stack frame from which to throw the check_field exception

Subroutines/Methods

check_form

$form = $dv->check_form( $prefix, $form );

Calls "check_field" for each of the keys in the form hash. In the calls to "check_field" the form keys have the prefix prepended to them to create the key to the fields hash

If one of the fields constraint names is compare, then the fields value is compared with the value for another field. The constraint attribute other_field determines which field to compare and the operator constraint attribute gives the comparison operator which defaults to eq

All fields are checked. Multiple error objects are stored, if they occur, in the args attribute of the returned error object

check_field

$value = $dv->check_field( $id, $value );

Checks one value for conformance. The id is used as a key to the fields hash whose validate attribute contains the list of space separated constraint names. The value is tested against each constraint in turn. All tests must pass or the subroutine will use the EXCEPTION_CLASS class to throw an error

Diagnostics

None

Dependencies

Moo
Try::Tiny
Unexpected

Incompatibilities

OpenDNS. I have received reports that hosts configured to use OpenDNS fail the isValidHostname test. Apparently OpenDNS causes the core Perl function gethostbyname to return it's argument rather than undefined as per the documentation

Bugs and Limitations

There are no known bugs in this module. Please report problems to http://rt.cpan.org/NoAuth/Bugs.html?Dist=Data-Validation. Patches are welcome

Acknowledgements

Larry Wall - For the Perl programming language

Author

Peter Flanigan, <pjfl@cpan.org>

License and Copyright

Copyright (c) 2016 Peter Flanigan. All rights reserved

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic

This program is distributed in the hope that it will be useful, but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE