Data::Validate::WithYAML - Validation framework that can be configured with YAML files
version 0.20
Perhaps a little code snippet.
use Data::Validate::WithYAML; my $foo = Data::Validate::WithYAML->new( 'test.yml' ); my %map = ( name => 'Test Person', password => 'xasdfjakslr453$', plz => 64569, word => 'Herr', age => 55, ); for my $field ( keys %map ){ print "ok: ",$map{$field},"\n" if $foo->check( $field, $map{$field} ); }
data.yml
--- step1: name: type: required length: 8,122 password: type: required length: 10, plz: regex: ^\d{4,5}$ type: optional word: enum: - Herr - Frau - Firma age: type: required min: 18 max: 65
my $foo = Data::Validate::WithYAML->new( 'filename' ); my $foo = Data::Validate::WithYAML->new( 'filename', allow_subs => 1, no_steps => 1, );
creates a new object.
This method makes a field optional if it was required
This method makes a field required if it was optional
This subroutine validates one form. You have to pass the form name (key in the config file), a hash with fieldnames and its values
my %fields = ( username => $cgi->param('user'), passwort => $password, ); $foo->validate( 'step1', %fields );
returns the message if specified in YAML
$obj->message( 'fieldname' );
$obj->check_list('fieldname',['value','value2']);
Checks if the values match the validation criteria. Returns an arrayref with checkresults:
[ 1, 0, ]
$obj->check('fieldname','value');
checks if a value is valid. returns 1 if the value is valid, otherwise it returns 0.
Returns the config for the given field.
Your test.yml:
--- age: type: required min: 18 max: 65
Your script:
my $info = $validator->fieldinfo( 'age' );
$info is a hashreference then:
$info
{ type => 'required', min => 18, max => 65, }
These config options can be used to configure a field:
type
mandatory. It defines if a value is required or optional
regex
A value for this field is valid if the value matches this regular expression
min
For numeric fields. A valid value must be greater than the value given for min
max
Also for numeric fields. A valid value must be lower than the value given for max
enum
A list of valid values.
sub
e.g.
sub: { $_ eq 'test' }
A codeblock that is evaled. You can only use this option when you set allow_subs in constructor call.
eval
length
A value for the field must be of length within this range
length: 1,
longer than 1 char.
length: 3,5
length must be between 3 and 5 chars
length: ,5
Value must be at longest 5 chars.
length: 3
Length must be exactly 3 chars
depends_on
Change the config for a field depending on an other field. This only works when validate is called.
validate
case
List of values the field it depends on can have. In case the field it depends on has a value listed in case, the default config for the file is changed.
password: type: required length: 1, depends_on: group case: admin: length: 10, agent: length: 5,
If the value for group is "admin", the given password must be longer than 10 chars, for agents the password must be longer than 5 chars and for every other group the password must be longer than 1 char.
depends_lax
Without this setting, a value for the field this field depends on must be given.
datatype
For a few types of values there are predefined checks.
num
int
positive_int
plugin
Use a plugin (e.g. Data::Validate::WithYAML::Plugin::EMail) to check the value.
Data::Validate::WithYAML::Plugin::EMail
plugin: EMail
Renee Baecker <reneeb@cpan.org>
This software is Copyright (c) 2014 by Renee Baecker.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
To install Data::Validate::WithYAML, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Validate::WithYAML
CPAN shell
perl -MCPAN -e shell install Data::Validate::WithYAML
For more information on module installation, please visit the detailed CPAN module installation guide.