blob: 6e84aa8eeeabd0ee5fd2c06989106ef3e948645e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
use MONKEY;
augment class Hash {
method merge (%b) {
hashmerge self, %b;
}
sub 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 {
note 'source';
%merge-into{$key} = %merge-source{$key};
}
}
%merge-into;
}
}
|