about summary refs log tree commit diff
path: root/lib/strings.nix
diff options
context:
space:
mode:
authorh7x4 <h7x4@nani.wtf>2023-10-17 01:12:49 +0200
committerh7x4 <h7x4@nani.wtf>2023-10-31 20:25:41 +0100
commit206d20426cb2959aab8cc3cfc8e62aa68bc7b52f (patch)
tree9e16017e21242d993fddf9ec37ecf02ac9e8f7e6 /lib/strings.nix
parentf320b0d46ee33f521f50d7c6885605714210e5c9 (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/strings.nix')
-rw-r--r--lib/strings.nix14
1 files changed, 14 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.