diff options
-rw-r--r-- | lib/default.nix | 2 | ||||
-rw-r--r-- | lib/strings.nix | 11 | ||||
-rw-r--r-- | lib/tests/misc.nix | 5 |
3 files changed, 17 insertions, 1 deletions
diff --git a/lib/default.nix b/lib/default.nix index 68e5b8dea1e..48d066e17cc 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -93,7 +93,7 @@ let subtractLists mutuallyExclusive groupBy groupBy'; inherit (self.strings) concatStrings concatMapStrings concatImapStrings intersperse concatStringsSep concatMapStringsSep - concatImapStringsSep makeSearchPath makeSearchPathOutput + concatImapStringsSep concatLines makeSearchPath makeSearchPathOutput makeLibraryPath makeBinPath optionalString hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape escapeShellArg escapeShellArgs isValidPosixName toShellVar toShellVars diff --git a/lib/strings.nix b/lib/strings.nix index 9a4f29380d0..32132e83b24 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -127,6 +127,17 @@ rec { # List of input strings list: concatStringsSep sep (lib.imap1 f list); + /* Concatenate a list of strings, adding a newline at the end of each one. + Defined as `concatMapStrings (s: s + "\n")`. + + Type: concatLines :: [string] -> string + + Example: + concatLines [ "foo" "bar" ] + => "foo\nbar\n" + */ + concatLines = concatMapStrings (s: s + "\n"); + /* 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 648c05ab357..7cd6dd182f4 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -153,6 +153,11 @@ runTests { expected = "a,b,c"; }; + testConcatLines = { + expr = concatLines ["a" "b" "c"]; + expected = "a\nb\nc\n"; + }; + testSplitStringsSimple = { expr = strings.splitString "." "a.b.c.d"; expected = [ "a" "b" "c" "d" ]; |