add support of raw key to the named field
This commit is contained in:
parent
da13688260
commit
3abddcaf77
2 changed files with 11 additions and 1 deletions
5
lib.nix
5
lib.nix
|
@ -39,6 +39,8 @@ let
|
||||||
else if isString expr || isPath expr then toString expr
|
else if isString expr || isPath expr then toString expr
|
||||||
else validationError expr "is not a valid string";
|
else validationError expr "is not a valid string";
|
||||||
|
|
||||||
|
validStringOrRaw = expr: if isRaw expr then expr else validString expr;
|
||||||
|
|
||||||
validFuncName = fnName:
|
validFuncName = fnName:
|
||||||
if isString fnName && builtins.stringLength fnName > 0 then raw fnName
|
if isString fnName && builtins.stringLength fnName > 0 then raw fnName
|
||||||
else validationError fnName "is not a valid function name";
|
else validationError fnName "is not a valid function name";
|
||||||
|
@ -169,7 +171,7 @@ let
|
||||||
isNamedField = expr: getType expr == "table_field";
|
isNamedField = expr: getType expr == "table_field";
|
||||||
namedField = name: expr: {
|
namedField = name: expr: {
|
||||||
_type = "table_field";
|
_type = "table_field";
|
||||||
name = validString name;
|
name = validStringOrRaw name;
|
||||||
value = toLua expr;
|
value = toLua expr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -187,6 +189,7 @@ let
|
||||||
isValidFieldName = name: isString name && match "^[[:alpha:]_][[:alnum:]_]*$" name == [ ];
|
isValidFieldName = name: isString name && match "^[[:alpha:]_][[:alnum:]_]*$" name == [ ];
|
||||||
toLuaNamedField = name: expr:
|
toLuaNamedField = name: expr:
|
||||||
if isNull expr then null
|
if isNull expr then null
|
||||||
|
else if isRaw name then "[${name.raw}] = ${expr}"
|
||||||
else if isValidFieldName name then "${name} = ${expr}"
|
else if isValidFieldName name then "${name} = ${expr}"
|
||||||
else "[${toLuaString name}] = ${expr}";
|
else "[${toLuaString name}] = ${expr}";
|
||||||
toLuaTable = onValue: expr: onValue (attrValues (mapAttrs namedField expr));
|
toLuaTable = onValue: expr: onValue (attrValues (mapAttrs namedField expr));
|
||||||
|
|
|
@ -127,6 +127,13 @@ with nix2lua; pkgs.lib.runTests {
|
||||||
];
|
];
|
||||||
expected = ''{ "foo", 10 }'';
|
expected = ''{ "foo", 10 }'';
|
||||||
};
|
};
|
||||||
|
"test returns named field with a raw in a key" = {
|
||||||
|
expr = toLua [
|
||||||
|
(namedField (raw "foo") 1)
|
||||||
|
(namedField "foo" 2)
|
||||||
|
];
|
||||||
|
expected = ''{ [foo] = 1, foo = 2 }'';
|
||||||
|
};
|
||||||
"test returns raw string" = {
|
"test returns raw string" = {
|
||||||
expr = toLua (raw "hello");
|
expr = toLua (raw "hello");
|
||||||
expected = "hello";
|
expected = "hello";
|
||||||
|
|
Loading…
Reference in a new issue