diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-05-14 13:16:06 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-05-14 13:16:06 +0100 |
commit | d43b852a028b6c77f1641361bff3d96f0d0ef4a8 (patch) | |
tree | d445fd1b4328689b08b8a098cf83fb8c4abc08b6 /lualib/lua_selectors | |
parent | f5095168e1f44c8f02c462a9f34bf34169646492 (diff) | |
download | rspamd-d43b852a028b6c77f1641361bff3d96f0d0ef4a8.tar.gz rspamd-d43b852a028b6c77f1641361bff3d96f0d0ef4a8.zip |
[Fix] Fix regexp selector and add flattening
Diffstat (limited to 'lualib/lua_selectors')
-rw-r--r-- | lualib/lua_selectors/transforms.lua | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lualib/lua_selectors/transforms.lua b/lualib/lua_selectors/transforms.lua index bbf5f510a..6f5ed7027 100644 --- a/lualib/lua_selectors/transforms.lua +++ b/lualib/lua_selectors/transforms.lua @@ -202,16 +202,24 @@ the second argument is optional hash type (`blake2`, `sha256`, `sha1`, `sha512`, local res = re:search(inp, false, true) if res then - if #res == 1 then - return res[1],'string' + -- Map all results in a single list + local flattened_table = {} + local function flatten_table(tbl) + for _, v in ipairs(tbl) do + if type(v) == 'table' then + flatten_table(v) + else + table.insert(flattened_table, v) + end + end end - - return res,'string_list' + flatten_table(res) + return flattened_table,'string_list' end return nil end, - ['description'] = 'Regexp matching', + ['description'] = 'Regexp matching, returns all matches flattened in a single list', ['args_schema'] = {ts.string} }, -- Returns a value if it exists in some map (or acts like a `filter` function) |