X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=lib%2FCGI%2FEx%2FValidate.pm;h=6b8401445b99189d35096551e053f321bbf9bfd1;hb=8a1796477c5a835d8c124cfa8504909dc786d93b;hp=e76695df3b95684f9999252cc323d06a29c4b89f;hpb=4eee158dce82376f2f37de29d91c53f60a24aebe;p=chaz%2Fp5-CGI-Ex diff --git a/lib/CGI/Ex/Validate.pm b/lib/CGI/Ex/Validate.pm index e76695d..6b84014 100644 --- a/lib/CGI/Ex/Validate.pm +++ b/lib/CGI/Ex/Validate.pm @@ -7,7 +7,7 @@ CGI::Ex::Validate - another form validator - but it does javascript in parallel =cut ###----------------------------------------------------------------### -# Copyright 2006 - Paul Seamons # +# Copyright 2007 - Paul Seamons # # Distributed under the Perl Artistic License without warranty # ###----------------------------------------------------------------### @@ -22,7 +22,7 @@ use vars qw($VERSION @UNSUPPORTED_BROWSERS ); -$VERSION = '2.00'; +$VERSION = '2.09'; $DEFAULT_EXT = 'val'; $QR_EXTRA = qr/^(\w+_error|as_(array|string|hash)_\w+|no_\w+)/; @@ -126,6 +126,7 @@ sub validate { next if $found{$field}; my $field_val = $group_val->{$field}; die "Found a nonhashref value on field $field" if ! UNIVERSAL::isa($field_val, 'HASH'); + $field_val->{'field'} = $field if ! defined $field_val->{'field'}; push @$fields, $field_val; } @@ -302,6 +303,11 @@ sub validate_buddy { $value =~ s/\s+$//; $modified = 1; } + if ($field_val->{'trim_control_chars'}) { + $value =~ y/\t/ /; + $value =~ y/\x00-\x1F//d; + $modified = 1; + } if ($field_val->{'to_upper_case'}) { # uppercase $value = uc($value); $modified = 1; @@ -334,6 +340,7 @@ sub validate_buddy { } }else{ foreach my $value (@$values) { + next if ! defined $value; $value =~ s{(?$opt:$pat)}{ my @match = (undef, $1, $2, $3, $4, $5, $6); # limit on the number of matches my $copy = $swap; @@ -795,7 +802,16 @@ sub generate_js { "$js_uri_path/CGI/Ex/validate.js"; }; - if (eval { require JSON }) { + if (! $self->{'no_jsondump'} && eval { require CGI::Ex::JSONDump }) { + my $json = CGI::Ex::JSONDump->new({pretty => 1})->dump($val_hash); + return qq{ + +}; + + } elsif (! $self->{'no_json'} && eval { require JSON }) { my $json = JSON->new(pretty => 1)->objToJson($val_hash); return qq{ @@ -1711,6 +1727,13 @@ not trim. {field => 'foo', do_not_trim => 1} +=item C + +Off by default. If set to true, removes characters in the +\x00 to \x31 range (Tabs are translated to a single space). + + {field => 'foo', trim_control_chars => 1} + =item C Pass a swap pattern to change the actual value of the form.