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'] = {