QBit::Validator

Model for check options in QBit application.

Usage

Install:

cpanm QBit::Validator

Require:

use QBit::Validator; #in package

Methods:

my $data = {
    hello => 'hi, qbit-validator'
};

my $qv = QBit::Validator->new(
    data => $data,
    template => {
        type => 'hash',
        fields => {
            hello => {
                max_len => 5,
            },
        },
    },
);
my $template = $qv->template;

$qv->template($template);
if ($qv->has_errors) {
    ...
}
$self->db->table->edit($qv->data) unless $qv->has_errors;
if ($qv->has_errors) {
    my @fields = $qv->get_fields_with_error;

    ldump(\@fields);

    # [
    #     {
    #         message => 'Error',
    #         path    => '/hello/'
    #     }
    # ]
    #
    # path => '/' - error in root
}
if ($qv->has_errors) {
    my $error = $qv->get_error('hello'); # or '/hello'

    print $error; # 'Error'
}
if ($qv->has_errors) {
    my $errors = $qv->get_all_errors();

    print $errors; # 'Error'
}
$qv->throw_exception if $qv->has_errors;

Options:

# global set handler
$QBit::Validator::SYS_ERRORS_HANDLER = sub {log($_[0])}; # first argument is error

#or local set handler
my $qv = QBit::Validator->new(template => {}, sys_errors_handler => sub {log($_[0])});
# global set path_manager
$QBit::Validator::PATH_MANAGER = 'MyPathManager::For::Data::DPath';

#or local set path_manager
my $qv = QBit::Validator->new(template => {}, path_manager => MyPathManager::For::Data::DPath->new()});

Default types

scalar (string/number)

array (ref array)

hash (ref hash)

variable