TT#69200 Reduce nesting levels in array_to_map()

Switch to early next iterations, and fold two consecutive ifs into one.

Change-Id: I2184a190dc1dd7cc303b52ece39a23deb28abb2c
(cherry picked from commit a551ce2246)
mr7.5.4
Guillem Jover 6 years ago committed by Rene Krenn
parent 7a3537e6c1
commit 2f2137d364

@ -264,8 +264,8 @@ sub array_to_map {
my $map = {}; my $map = {};
my @keys = (); my @keys = ();
my @values = (); my @values = ();
if (defined $array_ptr and ref $array_ptr eq 'ARRAY') { if (defined $array_ptr and ref $array_ptr eq 'ARRAY' and
if (defined $get_key_code and ref $get_key_code eq 'CODE') { defined $get_key_code and ref $get_key_code eq 'CODE') {
if (not (defined $get_value_code and ref $get_value_code eq 'CODE')) { if (not (defined $get_value_code and ref $get_value_code eq 'CODE')) {
$get_value_code = sub { return shift; }; $get_value_code = sub { return shift; };
} }
@ -275,9 +275,12 @@ sub array_to_map {
} }
foreach my $item (@$array_ptr) { foreach my $item (@$array_ptr) {
my $key = &$get_key_code($item); my $key = &$get_key_code($item);
if (defined $key) {
next unless defined $key;
my $value = &$get_value_code($item); my $value = &$get_value_code($item);
if (defined $value) { next unless defined $value;
if (not exists $map->{$key}) { if (not exists $map->{$key}) {
if ($mode eq 'group') { if ($mode eq 'group') {
$map->{$key} = [ $value ]; $map->{$key} = [ $value ];
@ -293,10 +296,7 @@ sub array_to_map {
} }
} }
push(@values,$value); push(@values,$value);
}
}
} }
}
} }
return ($map,\@keys,\@values); return ($map,\@keys,\@values);

Loading…
Cancel
Save