diff options
author | Aristotle Pagaltzis <pagaltzis@gmx.de> | 2016-12-27 05:47:37 +0100 |
---|---|---|
committer | Aristotle Pagaltzis <pagaltzis@gmx.de> | 2016-12-27 05:47:37 +0100 |
commit | 33f1827ffcb11ab760b1c6b1f0fc240a00058c4b (patch) | |
tree | 9cb191bdd7a1141451d8372ab9f4c8b95a2b38d1 /dist | |
parent | c6ae04d3b36cdce0d8f3943e411dabb13261a52f (diff) | |
download | perl-33f1827ffcb11ab760b1c6b1f0fc240a00058c4b.tar.gz |
Module::CoreList: clarify _undelta logic
Diffstat (limited to 'dist')
-rw-r--r-- | dist/Module-CoreList/lib/Module/CoreList.pm | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm b/dist/Module-CoreList/lib/Module/CoreList.pm index 12f4038d91..537dbf0e4b 100644 --- a/dist/Module-CoreList/lib/Module/CoreList.pm +++ b/dist/Module-CoreList/lib/Module/CoreList.pm @@ -7,16 +7,13 @@ $VERSION = '5.20170120'; sub _undelta { my ($delta) = @_; - my %expanded; - for my $version (sort { $a cmp $b } keys %$delta) { - my $data = $delta->{$version}; - my $from = $data->{delta_from}; - my %full = ( - ( $from ? %{$expanded{$from}} : () ), - %{$data->{changed} || {}}, - ); - delete @full{ keys %{$data->{removed}} }; - $expanded{$version} = \%full; + my (%expanded, $delta_from, $base, $changed, $removed); + for my $v (sort keys %$delta) { + ($delta_from, $changed, $removed) = @{$delta->{$v}}{qw( delta_from changed removed )}; + $base = $delta_from ? $expanded{$delta_from} : {}; + my %full = ( %$base, %{$changed || {}} ); + delete @full{ keys %$removed }; + $expanded{$v} = \%full; } return %expanded; } |