--- trunk/lib/WebPAC/Validate.pm 2006/09/06 21:09:30 642 +++ trunk/lib/WebPAC/Validate.pm 2006/09/06 21:10:30 643 @@ -9,6 +9,8 @@ use File::Slurp; use List::Util qw/first/; use Data::Dumper; +use WebPAC::Normalize qw/_pack_subfields_hash/; +use Storable qw/dclone/; =head1 NAME @@ -16,11 +18,11 @@ =head1 VERSION -Version 0.01 +Version 0.02 =cut -our $VERSION = '0.01'; +our $VERSION = '0.02'; =head1 SYNOPSIS @@ -45,7 +47,7 @@ Create new validation object my $validate = new WebPAC::Validate( - path => '/path/to/input/validate_file', + path => 'conf/validate/file', ); =cut @@ -143,10 +145,23 @@ push @errors, "$f has value without subfields: $v"; next; } else { + + my $h = dclone( $v ); + + delete($v->{subfields}) if (defined($v->{subfields})); + foreach my $sf (keys %{ $v }) { + # permited subfield? if (! first { $_ eq $sf } @{ $r->{$f} }) { - push @errors, "$f has unknown subfield: $sf" if ($sf ne 'subfields'); + push @errors, "$f has unknown subfield: $sf"; + } + + # is repeatable? + if ( ref($v->{$sf}) eq 'ARRAY' ) { + push @errors, "$f subfield $sf is repeatable: " . + join('', _pack_subfields_hash( dclone($h), 1) ); + ### FIXME } } }