lib.strings.concatMapAttrsStringSep: init
This commit is contained in:
@@ -100,7 +100,7 @@ let
|
||||
length head tail elem elemAt isList;
|
||||
inherit (self.strings) concatStrings concatMapStrings concatImapStrings
|
||||
stringLength substring isString replaceStrings
|
||||
intersperse concatStringsSep concatMapStringsSep
|
||||
intersperse concatStringsSep concatMapStringsSep concatMapAttrsStringSep
|
||||
concatImapStringsSep concatLines makeSearchPath makeSearchPathOutput
|
||||
makeLibraryPath makeIncludePath makeBinPath optionalString
|
||||
hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
|
||||
|
||||
@@ -269,6 +269,43 @@ rec {
|
||||
f:
|
||||
list: concatStringsSep sep (lib.imap1 f list);
|
||||
|
||||
/**
|
||||
Like [`concatMapStringsSep`](#function-library-lib.strings.concatMapStringsSep)
|
||||
but takes an attribute set instead of a list.
|
||||
|
||||
# Inputs
|
||||
|
||||
`sep`
|
||||
: Separator to add between item strings
|
||||
|
||||
`f`
|
||||
: Function that takes each key and value and return a string
|
||||
|
||||
`attrs`
|
||||
: Attribute set to map from
|
||||
|
||||
# Type
|
||||
|
||||
```
|
||||
concatMapAttrsStringSep :: String -> (String -> Any -> String) -> AttrSet -> String
|
||||
```
|
||||
|
||||
# Examples
|
||||
|
||||
:::{.example}
|
||||
## `lib.strings.concatMapAttrsStringSep` usage example
|
||||
|
||||
```nix
|
||||
concatMapAttrsStringSep "\n" (name: value: "${name}: foo-${value}") { a = "0.1.0"; b = "0.2.0"; }
|
||||
=> "a: foo-0.1.0\nb: foo-0.2.0"
|
||||
```
|
||||
|
||||
:::
|
||||
*/
|
||||
concatMapAttrsStringSep =
|
||||
sep: f: attrs:
|
||||
concatStringsSep sep (lib.attrValues (lib.mapAttrs f attrs));
|
||||
|
||||
/**
|
||||
Concatenate a list of strings, adding a newline at the end of each one.
|
||||
Defined as `concatMapStrings (s: s + "\n")`.
|
||||
|
||||
@@ -39,6 +39,7 @@ let
|
||||
composeManyExtensions
|
||||
concatLines
|
||||
concatMapAttrs
|
||||
concatMapAttrsStringSep
|
||||
concatMapStrings
|
||||
concatStrings
|
||||
concatStringsSep
|
||||
@@ -328,6 +329,11 @@ runTests {
|
||||
expected = "a,b,c";
|
||||
};
|
||||
|
||||
testConcatMapAttrsStringSepExamples = {
|
||||
expr = concatMapAttrsStringSep "\n" (name: value: "${name}: foo-${value}") { a = "0.1.0"; b = "0.2.0"; };
|
||||
expected = "a: foo-0.1.0\nb: foo-0.2.0";
|
||||
};
|
||||
|
||||
testConcatLines = {
|
||||
expr = concatLines ["a" "b" "c"];
|
||||
expected = "a\nb\nc\n";
|
||||
|
||||
Reference in New Issue
Block a user