aboutsummaryrefslogtreecommitdiff
path: root/lib/generators.nix
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2017-11-09 15:58:14 +0100
committerProfpatsch <mail@profpatsch.de>2017-11-22 21:53:59 +0100
commit8e00dcd242f33fa34c8dba3bad2854cbb6bd0659 (patch)
tree7110f258e33a887154d1f8b08d9fc96703d3c695 /lib/generators.nix
parentf09f49d48344f6d6e4558da96c257c9567852273 (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/generators.nix')
-rw-r--r--lib/generators.nix14
1 files changed, 9 insertions, 5 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