]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Lua_selectors: Allow table arguments for selectors
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 19 Aug 2019 14:31:12 +0000 (15:31 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 19 Aug 2019 14:31:12 +0000 (15:31 +0100)
lualib/lua_selectors/init.lua

index 35049068bb0688af25dbfb7b3dc373e2354d6d88..8173305981dbaaeb33bc2e61152407cfaed1b6ed 100644 (file)
@@ -214,6 +214,9 @@ local function make_grammar()
   local dot = l.P(".")
   local semicolon = l.P(":")
   local obrace = "(" * spc
+  local tbl_obrace = "{" * spc
+  local eqsign = spc * "=" * spc
+  local tbl_ebrace = spc * "}"
   local ebrace = spc * ")"
   local comma = spc * "," * spc
   local sel_separator = spc * l.S";*" * spc
@@ -225,7 +228,9 @@ local function make_grammar()
     PROCESSOR = l.Ct(atom * spc * (obrace * l.V("ARG_LIST") * ebrace)^0),
     FUNCTION = l.Ct(atom * spc * (obrace * l.V("ARG_LIST") * ebrace)^0),
     METHOD = l.Ct(atom / function(e) return '__' .. e end * spc * (obrace * l.V("ARG_LIST") * ebrace)^0),
-    ARG_LIST = l.Ct((argument * comma^0)^0)
+    ARG_LIST = l.Ct((l.V("ARG") * comma^0)^0),
+    ARG = l.Cf(tbl_obrace * l.V("NAMED_ARG") * tbl_ebrace, rawset) + argument,
+    NAMED_ARG = (l.Ct("") * l.Cg(argument * eqsign * argument * comma^0)^0),
   }
 end