--- trunk/lib/WebPAC/Validate.pm 2007/05/27 10:45:40 848 +++ trunk/lib/WebPAC/Validate.pm 2007/05/27 10:50:37 849 @@ -18,11 +18,11 @@ =head1 VERSION -Version 0.11 +Version 0.12 =cut -our $VERSION = '0.11'; +our $VERSION = '0.12'; =head1 SYNOPSIS @@ -302,17 +302,37 @@ return $errors; } -=head2 reset_errors +=head2 reset -Clean all accumulated errors for this input +Clean all accumulated errors for this input and remember delimiter templates +for L - $validate->reset_errors; + $validate->reset; + +This function B be called after each input to provide accurate statistics. =cut -sub reset_errors { +sub reset { my $self = shift; + + my $log = $self->_get_logger; + delete ($self->{errors}); + + if ( ! $self->{_delimiters_templates} ) { + $log->debug("called without _delimiters_templates?"); + return; + } + + foreach my $f ( keys %{ $self->{_delimiters_templates} } ) { + foreach my $t ( keys %{ $self->{_delimiters_templates}->{$f} } ) { + $self->{_accumulated_delimiters_templates}->{$f}->{$t} += + $self->{_delimiters_templates}->{$f}->{$t}; + } + } + $log->debug("_accumulated_delimiters_templates = ", dump( $self->{_accumulated_delimiter_templates} )); + delete ($self->{_delimiters_templates}); } =head2 all_errors @@ -448,6 +468,7 @@ my $report = $validate->delimiter_teplates( report => 1, + accumulated => 1, ); Options: @@ -458,6 +479,10 @@ Generate humanly readable report with single fields +=item accumulated + +Use accumulated data from all inputs + =back =cut @@ -467,7 +492,12 @@ my $args = {@_}; - my $t = $self->{_delimiters_templates}; + my $t; + if ( $args->{accumulated} ) { + $t = $self->{_accumulated_delimiters_templates}; + } else { + $t = $self->{_delimiters_templates}; + } my $log = $self->_get_logger; @@ -494,6 +524,10 @@ =head2 save_delimiters_templates +Save accumulated delimiter templates + + $validator->save_delimiters_template( '/path/to/validate/delimiters' ); + =cut sub save_delimiters_templates { @@ -505,10 +539,20 @@ my $log = $self->_get_logger; + if ( ! $self->{_accumulated_delimiters_templates} ) { + $log->error('no _accumulated_delimiters_templates found, reset'); + $self->reset; + } + + if ( ! $self->{_delimiters_templates} ) { + $log->error('found _delimiters_templates, calling reset'); + $self->reset; + } + $path .= '.new' if ( -e $path ); open(my $d, '>', $path) || $log->fatal("can't open $path: $!"); - print $d $self->delimiters_templates; + print $d $self->delimiters_templates( accumulated => 1 ); close($d); $log->info("new delimiters templates saved to $path");