From 67a34d4225146d2a343ec9e4ff37d50f9c2b43dc Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Tue, 25 Apr 2017 13:33:53 -0700 Subject: Clean up code some with a given when --- lib/Hash/Merge.pm6 | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/lib/Hash/Merge.pm6 b/lib/Hash/Merge.pm6 index b24f25d..60551a3 100644 --- a/lib/Hash/Merge.pm6 +++ b/lib/Hash/Merge.pm6 @@ -24,28 +24,30 @@ augment class Hash { for %merge-source.keys -> $key { if %merge-into{$key}:exists { - if %merge-source{$key} ~~ Hash { - hashmerge %merge-into{$key}, %merge-source{$key}, :$no-append-array; - } elsif %merge-source{$key} ~~ Positional { - if $no-append-array { - %merge-into{$key} = %merge-source{$key}; - } else { - my @a; - - @a.push: $_ for %merge-into{$key}.list; - @a.push: $_ for %merge-source{$key}.list; - - %merge-into{$key} = @a; + given %merge-source{$key} { + when Hash { + hashmerge %merge-into{$key}, + %merge-source{$key}, + :$no-append-array; + } + when Positional { + %merge-into{$key} = $no-append-array + ?? %merge-source{$key} + !! + do { + my @a; + @a.push: $_ for %merge-into{$key}.list; + @a.push: $_ for %merge-source{$key}.list; + @a; + } } - } else { # Non-positionals, so strings or Bools or whatever - %merge-into{$key} = %merge-source{$key}; + default { %merge-into{$key} = %merge-source{$key} } } } else { %merge-into{$key} = %merge-source{$key}; } } - %merge-into; } } -- cgit v1.1