blob: 6f6389e5c2d6196c1431f4f0dcfab22b6fae40ed (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
{lib, ...}: let
toLua = val:
# nil
if val == null
then "nil"
# boolean
else if builtins.isBool val
then
if val
then "true"
else "false"
# number
else if builtins.isInt val || builtins.isFloat val
then toString val
# string
else if builtins.isString val
then "'${val}'"
# table (array)
else if builtins.isList val
then "{ " + (lib.concatStringsSep ", " (map toLua val)) + " }"
# table (object)
else if builtins.isAttrs val
then
"{ "
+ (lib.concatStringsSep ", "
(lib.mapAttrsToList (k: v: "${k} = ${toLua v}") val))
+ " }"
# invalid
else throw "Unsupported value: ${toString val}";
in {
inherit toLua;
}
|