package FormValidator::Lite::Constraint::Default; use FormValidator::Lite::Constraint; rule 'NOT_NULL' => sub { return 0 if not defined($_); return 0 if $_ eq ""; return 0 if ref($_)eq'ARRAY' && @$_ == 0; return 1; }; rule 'INT' => sub { $_ =~ /\A[+\-]?[0-9]+\z/ }; rule 'UINT' => sub { $_ =~ /\A[0-9]+\z/ }; alias 'NOT_NULL' => 'NOT_BLANK'; rule 'ASCII' => sub { $_ =~ /^[\x21-\x7E]+$/ }; # {mails => [qw/mail1 mail2/]} => ['DUPLICATION'] rule 'DUPLICATION' => sub { defined($_->[0]) && defined($_->[1]) && $_->[0] eq $_->[1] }; alias 'DUPLICATION' => 'DUP'; # 'name' => [qw/LENGTH 5 20/], rule 'LENGTH' => sub { my $length = length($_); my $min = shift; my $max = shift || $min; Carp::croak("missing \$min") unless defined($min); ( $min <= $length and $length <= $max ) }; rule 'REGEX' => sub { my $regex = shift; Carp::croak("missing args at REGEX rule") unless defined $regex; $_ =~ /$regex/ }; alias 'REGEX' => 'REGEXP'; rule 'CHOICE' => sub { Carp::croak("missing \$choices") if @_ == 0; my @choices = @_==1 && ref$_[0]eq'ARRAY' ? @{$_[0]} : @_; for my $c (@choices) { if ($c eq $_) { return 1; } } return 0; }; 1; __END__ =head1 NAME FormValidator::Lite::Constraint::Default - default constraint rules =head1 DESCRIPTION This module provides default constraint rules for L. =head1 CONSTRAINTS =over 4 =item NOT_NULL The parameter is true value or not. =item NOT_BLANK Synonym of NOT_NULL. =item INT The parameter looks like a integer? i.e. It matches /^[+\-]?[0-9]+$/? =item UINT The parameter looks like a unsigned integer? i.e. It matches /^[0-9]+$/? =item ASCII $_ =~ /^[\x21-\x7E]+$/ The parameter is just ASCII? =item DUPLICATION $validator->check( {mails => [qw/mail1 mail2/]} => ['DUPLICATION'] ); The two parameters have same value? =item DUP Synonym of DUPLICATION. =item LENGTH $validator->check( name => [[qw/LENGTH 5 20/]], password => [[qw/LENGTH 5/]], ); Check the length of data. First argument means $minumum value, second argument is $max. $max is optional. =item REGEX $validator->check( name => [[REGEXP => qr/^[0-9]$/]], ); Check regexp matches parameter or not. =item REGEXP Synonym of REGEX. =item CHOICE $validator->check( sex => [[CHOICE => qw/male female/]] ); The parameter is one of choice or not. =back