TT#69200 Reduce nesting levels in array_to_map()

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

Change-Id: I2184a190dc1dd7cc303b52ece39a23deb28abb2c
changes/60/35060/1
Guillem Jover 6 years ago
parent 2b13bb6724
commit a551ce2246

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

Loading…
Cancel
Save