Unverified Commit 206d2042 authored by h7x4's avatar h7x4
Browse files

lib.strings: add `replicate`



`strings.replicate` returns n copies of a string, concatenated into a new
string

Co-authored-by: default avatarSilvan Mosberger <github@infinisil.com>
parent f320b0d4
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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.

+5 −0
Original line number Diff line number Diff line
@@ -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" ];