diff options
author | Patrick Spek <p.spek@tyil.nl> | 2017-04-23 21:44:40 +0200 |
---|---|---|
committer | Patrick Spek <p.spek@tyil.nl> | 2017-04-23 21:44:40 +0200 |
commit | 5a248da0c49f33d1b578d5b92768f0be35dd6797 (patch) | |
tree | ff9730b497d7f4225b87f5a080b53eb2a1628512 | |
parent | a1fdf43e36789e876fcb53b956d73c6e40ef2aa9 (diff) |
Add multi get() to accept arrays
-rw-r--r-- | lib/Config.pm6 | 15 | ||||
-rw-r--r-- | t/getting.t | 6 |
2 files changed, 19 insertions, 2 deletions
diff --git a/lib/Config.pm6 b/lib/Config.pm6 index 729ccba..abf2b44 100644 --- a/lib/Config.pm6 +++ b/lib/Config.pm6 @@ -44,7 +44,7 @@ class Config is export return ::($parser).write($path, $!content); } - method get(Str $key, Any :$default = Nil) + multi method get(Str $key, Any $default = Nil) { my $index = $!content; @@ -57,6 +57,19 @@ class Config is export $index; } + multi method get(@keyparts, Any $default? = Nil) + { + my $index = $!content; + + for @keyparts -> $part { + return $default unless defined($index{$part}); + + $index = $index{$part}; + } + + $index; + } + method has(Str $key) { my $index = $!content; diff --git a/t/getting.t b/t/getting.t index 15937a7..9d0cc5c 100644 --- a/t/getting.t +++ b/t/getting.t @@ -4,7 +4,7 @@ use v6.c; use Test; use lib "lib"; -plan 3; +plan 6; use Config; @@ -20,3 +20,7 @@ $config.read({ ok $config.get("a") eq "a"; ok $config.get("b.c") eq "c"; ok $config.get("nonexistant") === Nil; + +ok $config.get(["a"]) eq "a"; +ok $config.get(["b", "c"]) eq "c"; +ok $config.get(["nonexistant"]) === Nil; |