From 18e1a1ce36cbecd76f55ee46831a35849711d573 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 24 Apr 2017 14:44:48 -0700 Subject: Get array merging functionality --- lib/mergehash.pm6 | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/mergehash.pm6 b/lib/mergehash.pm6 index 206c881..6e84aa8 100644 --- a/lib/mergehash.pm6 +++ b/lib/mergehash.pm6 @@ -2,15 +2,32 @@ use MONKEY; augment class Hash { method merge (%b) { hashmerge self, %b; - self; } sub hashmerge (%merge-into, %merge-source) { - for %merge-source.keys { - if %merge-into{$_}:exists { - hashmerge %merge-into{$_}, %merge-source{$_}; + for %merge-source.keys -> $key { + if %merge-into{$key}:exists { + if %merge-source{$key} ~~ Hash { + hashmerge %merge-into{$key}, %merge-source{$key}; + } + elsif %merge-source{$key} ~~ Positional { + my @a; + for %merge-into{$key}.list { + say $_; + @a.push: $_; + } + for %merge-source{$key}.list { + say $_; + @a.push: $_; + } + %merge-into{$key} = @a; + } + else { + %merge-into{$key} = %merge-source{$key}; + } } else { - %merge-into{$_} = %merge-source{$_}; + note 'source'; + %merge-into{$key} = %merge-source{$key}; } } %merge-into; -- cgit v1.1