lib.strings.concatMapAttrsStringSep: init
This commit is contained in:
@@ -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")`.
|
||||
|
||||
Reference in New Issue
Block a user