]> source.dussan.org Git - rspamd.git/commitdiff
[Project] Add method concept
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 18 Sep 2018 13:39:08 +0000 (14:39 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 18 Sep 2018 14:38:30 +0000 (15:38 +0100)
lualib/lua_selectors.lua

index 80126d43db6b2de53baaf6c19be051fe29125820..f57d069daed401ad5b99e9f038dba4a2fed99b00 100644 (file)
@@ -667,17 +667,19 @@ local function make_grammar()
   local doublequoted_string = l.P '"' * l.C(((1 - l.S'"\r\n\f\\') + (l.P'\\' * 1))^0) * '"'
   local argument = atom + singlequoted_string + doublequoted_string
   local dot = l.P(".")
+  local semicolon = l.P(":")
   local obrace = "(" * spc
   local ebrace = spc * ")"
   local comma = spc * "," * spc
-  local sel_separator = spc * l.S":;*" * spc
+  local sel_separator = spc * l.S";*" * spc
 
   return l.P{
     "LIST";
     LIST = l.Ct(l.V("EXPR")) * (sel_separator * l.Ct(l.V("EXPR")))^0,
-    EXPR = l.V("FUNCTION") * (dot * l.V("PROCESSOR"))^0,
+    EXPR = l.V("FUNCTION") * (semicolon * l.V("METHOD"))^-1 * (dot * l.V("PROCESSOR"))^0,
     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)
   }
 end