diff options
author | h7x4 <h7x4@nani.wtf> | 2023-10-17 01:12:49 +0200 |
---|---|---|
committer | h7x4 <h7x4@nani.wtf> | 2023-10-31 20:25:41 +0100 |
commit | 206d20426cb2959aab8cc3cfc8e62aa68bc7b52f (patch) | |
tree | 9e16017e21242d993fddf9ec37ecf02ac9e8f7e6 /lib | |
parent | f320b0d46ee33f521f50d7c6885605714210e5c9 (diff) |
lib.strings: add `replicate`
`strings.replicate` returns n copies of a string, concatenated into a new string Co-authored-by: Silvan Mosberger <github@infinisil.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/strings.nix | 14 | ||||
-rw-r--r-- | lib/tests/misc.nix | 5 |
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/strings.nix b/lib/strings.nix index 628669d86bbd4..695aaaacd3488 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -144,6 +144,20 @@ rec { */ concatLines = concatMapStrings (s: s + "\n"); + /* + Replicate a string n times, + and concatenate the parts into a new string. + + Type: replicate :: int -> string -> string + + Example: + replicate 3 "v" + => "vvv" + replicate 5 "hello" + => "hellohellohellohellohello" + */ + replicate = n: s: concatStrings (lib.lists.replicate n s); + /* Construct a Unix-style, colon-separated search path consisting of the given `subDir` appended to each of the given paths. diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 2e7fda2b1f8b1..1fb857a65e998 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -191,6 +191,11 @@ runTests { expected = "a\nb\nc\n"; }; + testReplicateString = { + expr = strings.replicate 5 "hello"; + expected = "hellohellohellohellohello"; + }; + testSplitStringsSimple = { expr = strings.splitString "." "a.b.c.d"; expected = [ "a" "b" "c" "d" ]; |