lib/generators: put more information in toPretty lambdas

With `builtins.functionArgs` we can get some information if the first argument
is an attrset and whether the contained fields have default values. Encode that
into the pretty-printed lambda.
This commit is contained in:
Profpatsch
2017-06-22 00:58:59 +02:00
parent feb8cbdc38
commit 5cbc6ca9bb
2 changed files with 9 additions and 2 deletions
+7 -2
View File
@@ -91,7 +91,6 @@ rec {
*/
toYAML = {}@args: toJSON args;
# TODO we need some kind of pattern matching sometimes
/* Pretty print a value, akin to `builtins.trace`.
* Should probably be a builtin as well.
*/
@@ -105,7 +104,13 @@ rec {
else if isBool v then (if v == true then "true" else "false")
else if isString v then "\"" + v + "\""
else if null == v then "null"
else if isFunction v then "<λ>"
else if isFunction v then
let fna = functionArgs v;
showFnas = concatStringsSep "," (libAttr.mapAttrsToList
(name: hasDefVal: if hasDefVal then "(${name})" else name)
fna);
in if fna == {} then "<λ>"
else "<λ:{${showFnas}}>"
else if isList v then "[ "
+ libStr.concatMapStringsSep " " (toPretty args) v
+ " ]"