diff options
Diffstat (limited to 'users/sterni/nix/string')
-rw-r--r-- | users/sterni/nix/string/default.nix | 4 | ||||
-rw-r--r-- | users/sterni/nix/string/tests/default.nix | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/users/sterni/nix/string/default.nix b/users/sterni/nix/string/default.nix index 782f86b7f79b..e2b27571c73f 100644 --- a/users/sterni/nix/string/default.nix +++ b/users/sterni/nix/string/default.nix @@ -55,6 +55,9 @@ let then s else pad { inherit char; "${side}" = diff; } s; + # pattern matching for strings only + match = val: matcher: matcher."${val}"; + in { inherit take @@ -67,5 +70,6 @@ in { fromChars pad fit + match ; } diff --git a/users/sterni/nix/string/tests/default.nix b/users/sterni/nix/string/tests/default.nix index 576952673471..2caecbfa7b3f 100644 --- a/users/sterni/nix/string/tests/default.nix +++ b/users/sterni/nix/string/tests/default.nix @@ -45,9 +45,21 @@ let null) ]; + dontEval = builtins.throw "this should not get evaluated"; + + testMatch = it "tests match" [ + (assertEq "basic match usage" 42 + (string.match "answer" { + "answer" = 42; + "banana" = dontEval; + "maleur" = dontEval; + })) + ]; + in runTestsuite "nix.string" [ testTakeDrop testIndexing testFinding + testMatch ] |