diff options
author | Naïm Favier <n@monade.li> | 2022-12-10 15:56:30 +0100 |
---|---|---|
committer | Naïm Favier <n@monade.li> | 2022-12-10 15:56:30 +0100 |
commit | ed0b8c26f127525a9ee66f895bdc894cdaa5d685 (patch) | |
tree | 608169ac5743d8693a16f34cb8206a62f243f3db | |
parent | f8fc2323e9ba9d25aebef0a15cec5ca5cabdc495 (diff) |
lib/strings: add `concatLines`
Like `unlines` from Haskell. The aim is to replace the `concatStringsSep "\n"` pattern for generated files, which doesn't add a final newline.
-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 68e5b8dea1eb8..48d066e17cccd 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 9a4f29380d0de..32132e83b242c 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 648c05ab35720..7cd6dd182f47c 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" ]; |