/[webpac2]/trunk/lib/WebPAC/Validate.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/WebPAC/Validate.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 838 by dpavlin, Thu May 24 14:42:35 2007 UTC revision 849 by dpavlin, Sun May 27 10:50:37 2007 UTC
# Line 18  WebPAC::Validate - provide simple valida Line 18  WebPAC::Validate - provide simple valida
18    
19  =head1 VERSION  =head1 VERSION
20    
21  Version 0.11  Version 0.12
22    
23  =cut  =cut
24    
25  our $VERSION = '0.11';  our $VERSION = '0.12';
26    
27  =head1 SYNOPSIS  =head1 SYNOPSIS
28    
# Line 67  sub new { Line 67  sub new {
67          my $self = {@_};          my $self = {@_};
68          bless($self, $class);          bless($self, $class);
69    
 warn dump( @_ );  
   
70          my $log = $self->_get_logger();          my $log = $self->_get_logger();
71    
72            $log->logdie("need path or delimiters_path") unless ( $self->{path} || $self->{delimiters_path} );
73    
74          if ( $self->{path} ) {          if ( $self->{path} ) {
75    
76                  my $v_file = read_file( $self->{path} ) ||                  my $v_file = read_file( $self->{path} ) ||
# Line 140  warn dump( @_ ); Line 140  warn dump( @_ );
140                                  }                                  }
141                          }                          }
142                          close($d);                          close($d);
143                          warn "_validate_delimiters_templates = ",dump( $self->{_validate_delimiters_templates} );                          #warn "_validate_delimiters_templates = ",dump( $self->{_validate_delimiters_templates} );
144                  } else {                  } else {
145                          $log->warn("delimiters path $path doesn't exist, it will be created after this run");                          $log->warn("delimiters path $path doesn't exist, it will be created after this run");
146                  }                  }
# Line 194  sub validate_rec { Line 194  sub validate_rec {
194    
195                                          if ( my $v = $self->{_validate_delimiters_templates} ) {                                          if ( my $v = $self->{_validate_delimiters_templates} ) {
196                                                  if ( ! defined( $v->{$f}->{$template} ) ) {                                                  if ( ! defined( $v->{$f}->{$template} ) ) {
197                                                          $errors->{$f}->{invalid_delimiters_combination} = $template;                                                          $errors->{$f}->{potentially_invalid_combination} = $template;
198                                                          $errors->{$f}->{dump} = $subfield_dump;                                                          $errors->{$f}->{dump} = $subfield_dump;
199                                                  #} else {                                                  #} else {
200                                                  #       warn "## $f $template ok\n";                                                  #       warn "## $f $template ok\n";
# Line 302  sub validate_rec { Line 302  sub validate_rec {
302          return $errors;          return $errors;
303  }  }
304    
305  =head2 reset_errors  =head2 reset
306    
307    Clean all accumulated errors for this input and remember delimiter templates
308    for L<save_delimiters_templates>
309    
310  Clean all accumulated errors for this input    $validate->reset;
311    
312    $validate->reset_errors;  This function B<must> be called after each input to provide accurate statistics.
313    
314  =cut  =cut
315    
316  sub reset_errors {  sub reset {
317          my $self = shift;          my $self = shift;
318    
319            my $log = $self->_get_logger;
320    
321          delete ($self->{errors});          delete ($self->{errors});
322    
323            if ( ! $self->{_delimiters_templates} ) {
324                    $log->debug("called without _delimiters_templates?");
325                    return;
326            }
327    
328            foreach my $f ( keys %{ $self->{_delimiters_templates} } ) {
329                    foreach my $t ( keys %{ $self->{_delimiters_templates}->{$f} } ) {
330                            $self->{_accumulated_delimiters_templates}->{$f}->{$t} +=
331                                    $self->{_delimiters_templates}->{$f}->{$t};
332                    }
333            }
334            $log->debug("_accumulated_delimiters_templates = ", dump( $self->{_accumulated_delimiter_templates} ));
335            delete ($self->{_delimiters_templates});
336  }  }
337    
338  =head2 all_errors  =head2 all_errors
# Line 448  Generate report of delimiter tamplates Line 468  Generate report of delimiter tamplates
468    
469    my $report = $validate->delimiter_teplates(    my $report = $validate->delimiter_teplates(
470          report => 1,          report => 1,
471            accumulated => 1,
472    );    );
473    
474  Options:  Options:
# Line 458  Options: Line 479  Options:
479    
480  Generate humanly readable report with single fields  Generate humanly readable report with single fields
481    
482    =item accumulated
483    
484    Use accumulated data from all inputs
485    
486  =back  =back
487    
488  =cut  =cut
# Line 467  sub delimiters_templates { Line 492  sub delimiters_templates {
492    
493          my $args = {@_};          my $args = {@_};
494    
495          my $t = $self->{_delimiters_templates};          my $t;
496            if ( $args->{accumulated} ) {
497                    $t = $self->{_accumulated_delimiters_templates};
498            } else {
499                    $t = $self->{_delimiters_templates};
500            }
501    
502          my $log = $self->_get_logger;          my $log = $self->_get_logger;
503    
# Line 494  sub delimiters_templates { Line 524  sub delimiters_templates {
524    
525  =head2 save_delimiters_templates  =head2 save_delimiters_templates
526    
527    Save accumulated delimiter templates
528    
529      $validator->save_delimiters_template( '/path/to/validate/delimiters' );
530    
531  =cut  =cut
532    
533  sub save_delimiters_templates {  sub save_delimiters_templates {
# Line 505  sub save_delimiters_templates { Line 539  sub save_delimiters_templates {
539    
540          my $log = $self->_get_logger;          my $log = $self->_get_logger;
541    
542            if ( ! $self->{_accumulated_delimiters_templates} ) {
543                    $log->error('no _accumulated_delimiters_templates found, reset');
544                    $self->reset;
545            }
546    
547            if ( ! $self->{_delimiters_templates} ) {
548                    $log->error('found _delimiters_templates, calling reset');
549                    $self->reset;
550            }
551    
552            $path .= '.new' if ( -e $path );
553    
554          open(my $d, '>', $path) || $log->fatal("can't open $path: $!");          open(my $d, '>', $path) || $log->fatal("can't open $path: $!");
555          print $d $self->delimiters_templates;          print $d $self->delimiters_templates( accumulated => 1 );
556          close($d);          close($d);
557    
558          $log->info("new delimiters templates saved to $path");          $log->info("new delimiters templates saved to $path");

Legend:
Removed from v.838  
changed lines
  Added in v.849

  ViewVC Help
Powered by ViewVC 1.1.26