From 00364dee148529e65755cbc31bd949ce0079cb42 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Mon, 20 May 2024 13:31:10 +0300 Subject: [PATCH] add support of set to use pipe as lhs --- lib.nix | 11 ++++++++--- lib.test.nix | 10 +++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lib.nix b/lib.nix index 9f1fe32..44de581 100644 --- a/lib.nix +++ b/lib.nix @@ -121,15 +121,20 @@ let or' = op kw_or; not = expr: spaceBetween [ kw_not expr ]; + local = expr: spaceBetween [ kw_local expr ]; + + validSetVariable = expr: + if isJoin expr && expr.sep == "." then expr + else if isRaw expr then expr + else raw (validString expr); + set = var: val: join " = " [ (validSetVariable var) val ]; + # Type: validBlockBody :: a -> [b] validBlockBody = body: if isList body then body else if isAttrs body then [ body ] else validationError body "is not valid block body"; - local = expr: spaceBetween [ kw_local expr ]; - set = variable: value: join " = " [ (raw variable) value ]; - funcParams' = params: wrapParen (join ", " (map raw params)); func = fnName: params: body: diff --git a/lib.test.nix b/lib.test.nix index d2db78b..8854a59 100644 --- a/lib.test.nix +++ b/lib.test.nix @@ -177,15 +177,19 @@ with nix2lua; pkgs.lib.runTests { ]); expected = "require(\"nvim-tree.api\").config.mappings.default_on_attach(bufnr)"; }; - "test returns lua with setting value to the variable" = { + "test returns a simple var definition" = { expr = toLua (set "parser_config.d2" { }); expected = "parser_config.d2 = { }"; }; - "test returns lua with setting value to the local variable" = { + "test returns a var definition with pipe in the name part" = { + expr = toLua (set (pipe1 "parser_config" "d2") { }); + expected = "parser_config.d2 = { }"; + }; + "test returns a local var definition" = { expr = toLua (local (set "parser_config.d2" { })); expected = "local parser_config.d2 = { }"; }; - "test returns a short variant of setting a value to the local variable" = { + "test returns a short variant of local var definitions" = { expr = toLua (lset "parser_config.d2" { }); expected = "local parser_config.d2 = { }"; };