diff options
-rw-r--r-- | lib/mergehash.pm6 (renamed from mergehash.p6) | 16 | ||||
-rw-r--r-- | t/01-thing.t | 18 |
2 files changed, 21 insertions, 13 deletions
diff --git a/mergehash.p6 b/lib/mergehash.pm6 index 84ef007..206c881 100644 --- a/mergehash.p6 +++ b/lib/mergehash.pm6 @@ -1,23 +1,13 @@ use MONKEY; -my %a; -my %b; -#%a<Z> = "orig"; -#%b<Z> = "new"; -%a<b> = 1; -%b<a> = 2; -%a<y><z> = 2; -%b<y><a> = 1; -%a.merge(%b).say; -say %b; augment class Hash { method merge (%b) { hashmerge self, %b; self; } - sub hashmerge (%merge-source, %merge-into) { + sub hashmerge (%merge-into, %merge-source) { for %merge-source.keys { if %merge-into{$_}:exists { - hashmerge %merge-source{$_}, %merge-into{$_}; + hashmerge %merge-into{$_}, %merge-source{$_}; } else { %merge-into{$_} = %merge-source{$_}; @@ -25,4 +15,4 @@ augment class Hash { } %merge-into; } -}
\ No newline at end of file +} diff --git a/t/01-thing.t b/t/01-thing.t new file mode 100644 index 0000000..6960a7a --- /dev/null +++ b/t/01-thing.t @@ -0,0 +1,18 @@ +#!/usr/bin/env perl6 +use v6; +use lib 'lib'; +use mergehash; +use Test; +my %a; +my %b; +#%a<Z> = "orig"; +#%b<Z> = "new"; +%a<b> = 1; +%b<a> = 2; +%a<y><z> = 2; +%b<y><a> = 1; +my %b-orig = %b; +my %a-orig = %a; +%a.merge(%b); +is-deeply %b, %b-orig; +is-deeply %a, {:a(2), :b(1), :y(${:a(1), :z(2)})}; |