From 28371fa0913fa881c59298ec19a27fb9a3cce816 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Thu, 24 May 2007 10:53:50 +0000 Subject: [PATCH] r1228@llin: dpavlin | 2007-05-24 12:53:57 +0200 report invalid delimiter combinations git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@835 07558da8-63fa-0310-ba24-9fe276d99e06 --- lib/WebPAC/Validate.pm | 28 ++++++++++++++++++++-------- t/1-validate-delimiters.t | 20 +++++++++++++++++++- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/lib/WebPAC/Validate.pm b/lib/WebPAC/Validate.pm index 32d55f0..8e03ff0 100644 --- a/lib/WebPAC/Validate.pm +++ b/lib/WebPAC/Validate.pm @@ -160,13 +160,25 @@ sub validate_rec { if ( my $regex = $self->{delimiters_regex} ) { foreach my $v (@{ $rec->{$f} }) { - my $l = _pack_subfields_hash( $v, 1 ); - my $template = ''; - $l =~ s/$regex/$template.=$1/eg; -# warn "## template: $template\n"; - $self->{_delimiters_templates}->{$f}->{$template}++ if ( $template ); + my $l = _pack_subfields_hash( $v, 1 ); + my $subfield_dump = $l; + my $template = ''; + $l =~ s/$regex/$template.=$1/eg; + #warn "## template: $template\n"; + + if ( $template ) { + $self->{_delimiters_templates}->{$f}->{$template}++; + + if ( my $v = $self->{_validate_delimiters_templates} ) { + if ( ! defined( $v->{$template} ) ) { + $errors->{$f}->{invalid_delimiters_combination} = $template; + $errors->{$f}->{dump} = $subfield_dump; + } else { + warn "## $f $template ok\n"; + } + } + } } - } next if (defined( $self->{dont_validate}->{$f} )); @@ -326,7 +338,7 @@ sub report_error { if ($k eq 'dump') { $dump = $tree->{dump}; -# warn "## dump: ",dump($dump),"\n"; + #warn "## dump ",dump($dump),"\n"; next; } @@ -360,7 +372,7 @@ sub report_error { sub _reformat { my $l = shift; $l =~ s/\t/ /g; - $l =~ s/_/ /; + $l =~ s/_/ /g; return $l; } diff --git a/t/1-validate-delimiters.t b/t/1-validate-delimiters.t index d9a859c..a01ed96 100755 --- a/t/1-validate-delimiters.t +++ b/t/1-validate-delimiters.t @@ -1,7 +1,7 @@ #!/usr/bin/perl -w use strict; -use Test::More tests => 6; +use Test::More tests => 7; use Test::Exception; use blib; @@ -69,3 +69,21 @@ diag $dt; ok($dt = $v->delimiters_templates( report => 1 ), 'delimiters_template report'); diag $dt; + +$v->{_validate_delimiters_templates} = { + 900 => { '^a : ^b' => 1 }, +}; + +test_v({ + '900' => [ + { 'a' => 'foo : bar', 'b' => 'baz' }, + { 'a' => 'foo', 'b' => 'baz' }, + { 'a' => 'foo' }, + { 'a' => 'foo : bar' }, + ], +}); + +ok (my $e = $v->report, 'report'); + +diag $e; +diag dump( $v->{errors} ); -- 2.20.1