aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamantha McVey <samantham@posteo.net>2017-04-24 14:13:06 -0700
committerSamantha McVey <samantham@posteo.net>2017-04-24 14:13:06 -0700
commitf516e377ac7f48fa2e836a2f5382cbd7459ea6de (patch)
tree8efd798bceb89450e75448d24dc3759a527772ae
Initial commit of merge hash functionality
-rw-r--r--mergehash.p628
1 files changed, 28 insertions, 0 deletions
diff --git a/mergehash.p6 b/mergehash.p6
new file mode 100644
index 0000000..84ef007
--- /dev/null
+++ b/mergehash.p6
@@ -0,0 +1,28 @@
+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) {
+ for %merge-source.keys {
+ if %merge-into{$_}:exists {
+ hashmerge %merge-source{$_}, %merge-into{$_};
+ }
+ else {
+ %merge-into{$_} = %merge-source{$_};
+ }
+ }
+ %merge-into;
+ }
+} \ No newline at end of file