mirror of
https://codeberg.org/scip/Data-Validate-Struct.git
synced 2025-12-17 04:31:01 +01:00
revert 495fcbc, added test case for issue#7
This commit is contained in:
15
Struct.pm
15
Struct.pm
@@ -21,7 +21,7 @@ use File::stat;
|
||||
use Data::Validate qw(:math is_printable);
|
||||
use Data::Validate::IP qw(is_ipv4 is_ipv6);
|
||||
|
||||
our $VERSION = 0.11;
|
||||
our $VERSION = 0.12;
|
||||
|
||||
use vars qw(@ISA);
|
||||
|
||||
@@ -195,14 +195,7 @@ sub _traverse {
|
||||
my ($self, $reference, $hash, @tree) = @_;
|
||||
|
||||
foreach my $key (keys %{$reference}) {
|
||||
my $reference_ref = ref $reference->{$key};
|
||||
my $hash_ref = ref $hash->{$key};
|
||||
if ($reference_ref =~ /^ARRAY|HASH$/ && $reference_ref ne $hash_ref)
|
||||
{
|
||||
my $err = sprintf("Different structure types %s vs %s", $reference_ref, $hash_ref);
|
||||
push @{$self->{errors}}, sprintf(q{%s at '%s'}, $err, join(' => ', @tree));
|
||||
}
|
||||
elsif ($reference_ref eq 'ARRAY') {
|
||||
if (ref($reference->{$key}) eq 'ARRAY') {
|
||||
# just use the 1st one, more elements in array are expected to be the same
|
||||
foreach my $item (@{$hash->{$key}}) {
|
||||
if (ref($item) eq q(HASH)) {
|
||||
@@ -219,10 +212,10 @@ sub _traverse {
|
||||
}
|
||||
}
|
||||
}
|
||||
elsif ($reference_ref eq 'HASH') {
|
||||
elsif (ref($reference->{$key}) eq 'HASH') {
|
||||
$self->_traverse($reference->{$key}, $hash->{$key}, @tree, $key);
|
||||
}
|
||||
elsif ($reference_ref eq '') {
|
||||
elsif (ref($reference->{$key}) eq '') {
|
||||
$self->_debug("Checking $key at " . join(', ', @tree));
|
||||
if (my $err = $self->_check_type($key, $reference, $hash)) {
|
||||
push @{$self->{errors}}, sprintf(q{%s at '%s'}, $err, join(' => ', @tree));
|
||||
|
||||
Reference in New Issue
Block a user