commit 0c8dcea: [Minor] Selectors: Add except_map function

Vsevolod Stakhov vsevolod at highsecure.ru
Mon Aug 19 15:56:08 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-08-19 14:37:10 +0100
URL: https://github.com/rspamd/rspamd/commit/0c8dcea94a3999d7a008afa37eb740ec431defc3

[Minor] Selectors: Add except_map function

---
 lualib/lua_selectors/transforms.lua | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/lualib/lua_selectors/transforms.lua b/lualib/lua_selectors/transforms.lua
index 99b4201ef..ffc9acd00 100644
--- a/lualib/lua_selectors/transforms.lua
+++ b/lualib/lua_selectors/transforms.lua
@@ -253,6 +253,31 @@ the second argument is optional hash type (`blake2`, `sha256`, `sha1`, `sha512`,
     ['description'] = 'Returns a value if it exists in some map (or acts like a `filter` function)',
     ['args_schema'] = {ts.string}
   },
+  -- Returns a value if it exists in some map (or acts like a `filter` function)
+  ['except_map'] = {
+    ['types'] = {
+      ['string'] = true
+    },
+    ['map_type'] = 'string',
+    ['process'] = function(inp, t, args)
+      local map = maps[args[1]]
+
+      if not map then
+        logger.errx('invalid map name: %s', args[1])
+        return nil
+      end
+
+      local res = map:get_key(inp)
+
+      if not res then
+        return inp,t
+      end
+
+      return nil
+    end,
+    ['description'] = 'Returns a value if it does not exists in some map (or acts like a `except` function)',
+    ['args_schema'] = {ts.string}
+  },
   -- Returns a value from some map corresponding to some key (or acts like a `map` function)
   ['apply_map'] = {
     ['types'] = {


More information about the Commits mailing list