NAME

Validator::Checker::HOWTO - how to develop checkers for Validator::Var

DESCRIPTION

This HOWTO describes how to develop custom checkers for use with Validator::Var objects. Generally speaking there is no built-in and custom checkers, all of them are simply checkers.

GO

Writing checker

As an example you can look at package Validator::Checker::MostWanted. As you can see - it's very simple. Now let's try to develop your own checkers.

package Your::Custom::Checker;

require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw( Your_Checker Your_Another_Checker );


sub Your_Checker {[
    \&_your_checker,              # ref to checker subroutine
    'Your_Checker',               # checker name
    'corresponds to Your_Checker' # description
]}

sub Your_Another_Checker {[
    \&_your_another_checker,
    'Your_Another_Checker',
    'corresponds to Your_Another_Checker'
]};


# checker without arguments
#
sub _your_checker
{
    my $var = shift;
    my $bool;
    
    # checkers code
    # ...
    
    return $bool;
}

# checker with arguments
#
sub _your_another_checker
{
    my ($var, @args) = @_;
    my $bool;
    
    # checkers code
    # ...
    
    return $bool;
}


1;

Using checkers

You can use your newly created checker in standard manner:

use Your::Custom::Checker qw( Your_Checker Your_Another_Checker );

my $foo = Validator::Var->new();
$foo->checker(Your_Checker);
unless ( $foo->is_valid( $var ) ) {
    warn "variable does not passed Your_Chacker";
}

my $bar = Validator::Var->new();
$bar->checker(Your_Another_Checker, $arg0, $arg1, $arg2 );
unless ( $bar->is_valid( $var ) ) {
    warn "variable does not passed Your_Another_Checker";
}

AUTHOR

Fedor Semenov, <fedor.v.semenov at gmail.com>