NAME
Data::Validate::WithYAML - Validation framework that can be configured
with YAML files
VERSION
version 0.20
SYNOPSIS
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
METHODS
new
my $foo = Data::Validate::WithYAML->new( 'filename' );
my $foo = Data::Validate::WithYAML->new(
'filename',
allow_subs => 1,
no_steps => 1,
);
creates a new object.
set_optional
This method makes a field optional if it was required
set_required
This method makes a field required if it was optional
validate
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 );
fieldnames
errstr
message
returns the message if specified in YAML
$obj->message( 'fieldname' );
check_list
$obj->check_list('fieldname',['value','value2']);
Checks if the values match the validation criteria. Returns an arrayref
with checkresults:
[
1,
0,
]
check
$obj->check('fieldname','value');
checks if a value is valid. returns 1 if the value is valid, otherwise
it returns 0.
fieldinfo
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:
{
type => 'required',
min => 18,
max => 65,
}
FIELDCONFIG
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.
* 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.
* 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.
plugin: EMail
AUTHOR
Renee Baecker <
[email protected]>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2014 by Renee Baecker.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)