diff options
author | Profpatsch <mail@profpatsch.de> | 2017-11-09 15:58:14 +0100 |
---|---|---|
committer | Profpatsch <mail@profpatsch.de> | 2017-11-22 21:53:59 +0100 |
commit | 8e00dcd242f33fa34c8dba3bad2854cbb6bd0659 (patch) | |
tree | 7110f258e33a887154d1f8b08d9fc96703d3c695 /lib | |
parent | f09f49d48344f6d6e4558da96c257c9567852273 (diff) |
lib/generators: add mkValueString to mkKeyValueDefault generator
This means the generation of values can now be influenced, even down from e.g.
an INI generator.
Breaks the interface of `mkKeyValueDefault` to match its interface to other
generator functions. It might me sensible to rename `mkKeyValue` and
`mkKeyValueSet` to conform to the `toX`-style of generator functions.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/generators.nix | 14 | ||||
-rw-r--r-- | lib/tests/misc.nix | 2 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/generators.nix b/lib/generators.nix index 5f9da234f44..b27ab485f41 100644 --- a/lib/generators.nix +++ b/lib/generators.nix @@ -22,11 +22,15 @@ rec { * character sep. If sep appears in k, it is escaped. * Helper for synaxes with different separators. * - * mkKeyValueDefault ":" "f:oo" "bar" + * mkValueString specifies how values should be formatted. + * + * mkKeyValueDefault {} ":" "f:oo" "bar" * > "f\:oo:bar" */ - mkKeyValueDefault = sep: k: v: - "${libStr.escape [sep] k}${sep}${toString v}"; + mkKeyValueDefault = { + mkValueString ? toString + }: sep: k: v: + "${libStr.escape [sep] k}${sep}${mkValueString v}"; /* Generate a key-value-style config file from an attrset. @@ -34,7 +38,7 @@ rec { * mkKeyValue is the same as in toINI. */ toKeyValue = { - mkKeyValue ? mkKeyValueDefault "=" + mkKeyValue ? mkKeyValueDefault {} "=" }: attrs: let mkLine = k: v: mkKeyValue k v + "\n"; in libStr.concatStrings (libAttr.mapAttrsToList mkLine attrs); @@ -64,7 +68,7 @@ rec { # apply transformations (e.g. escapes) to section names mkSectionName ? (name: libStr.escape [ "[" "]" ] name), # format a setting line from key and value - mkKeyValue ? mkKeyValueDefault "=" + mkKeyValue ? mkKeyValueDefault {} "=" }: attrsOfAttrs: let # map function to string for each key val diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 4c4c06fe78d..1657ec33a46 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -201,7 +201,7 @@ runTests { # in alphabetical order testMkKeyValueDefault = { - expr = generators.mkKeyValueDefault ":" "f:oo" "bar"; + expr = generators.mkKeyValueDefault {} ":" "f:oo" "bar"; expected = ''f\:oo:bar''; }; |