NAME
Kossy::Validator - form validator
SYNOPSIS
use Kossy::Validator;
my $req = Plack::Request->new($env);
my $result = Kossy::Validator->check($req, [
      'q' => [['NOT_NULL','query must be defined']],
      'level' => {
          default => 'M', # or sub { 'M' }
          rule => [
              [['CHOICE',qw/L M Q H/],'invalid level char'],
          ],
      },
      '@area' => {
          rule => [
              ['UINT','area must be uint'],
              [['CHOICE', (0..40)],'invalid area'],
          ],
      },
]);
$result->has_error:Flag
$result->messages:ArrayRef[`Str]
my $val = $result->valid('q');
my @val = $result->valid('area');
my $hash = $result->valid:Hash::MultiValue;
DESCRIPTION
minimalistic form validator used in Kossy
VALIDATORS
- NOT_NULL
 - CHOICE
 - 
['CHOICE',qw/dog cat/] - INT
 - 
int
 - UINT
 - 
unsigned int
 - NATURAL
 - 
natural number
 - REAL, DOUBLE, FLOAT
 - 
floating number
 - @SELECTED_NUM
 - 
['@SELECTED_NUM',min,max] - @SELECTED_UNIQ
 - 
all selected values are unique
 
CODEref VALIDATOR
my $result = Kossy::Validator->check($req,[
    'q' => [
        [sub{
            my ($req,$val) = @_;
        },'invalid']
    ],
]);
my $result = Kossy::Validator->check($req,[
    'q' => [
        [[sub{
            my ($req,$val,@args) = @_;
        },0,1],'invalid']
    ],
]);
ADDING VALIDATORS
add to %Kossy::Validator::VALIDATOR
local $Kossy::Validator::VALIDATOR{MYRULE} = sub {
    my ($req, $val, @args) = @_;
    return 1;
};
local $Kossy::Validator::VALIDATOR{'@MYRULE2'} = sub {
    my ($req, $vals, $num) = @_;
    return if @$vals != $num;
    return if uniq(@$vals) == $num;
};
Kossy::Validator->check($req,[
    key1 => [['MYRULE','my rule']],
    '@key2' => {
       rule => [
           [['@MYRULE2',3], 'select 3 items'],
           [['CHOICE',qw/1 2 3 4 5/], 'invalid']
       ],
    }
]);
if rule name start with '@', all values are passed as ArrayRef instead of last value.
SEE ALSO
LICENSE
Copyright (C) Masahiro Nagano.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Masahiro Nagano <kazeburo@gmail.com>