]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Add universal keys and values functions
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Jul 2019 11:49:42 +0000 (12:49 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Jul 2019 15:51:09 +0000 (16:51 +0100)
lualib/lua_util.lua

index e8dc57429722a1a39509b4566cd83c181c7a0f55..fc4f33c83ce4484165c6b821d68ee866eaf6fd8f 100644 (file)
@@ -994,4 +994,54 @@ exports.callback_from_string = function(str)
   return res_or_err
 end
 
+---[[[
+-- @function lua_util.keys(t)
+-- Returns all keys from a specific table
+-- @param {table} t input table (or iterator triplet)
+-- @return array of keys
+--]]]
+exports.keys = function(gen, param, state)
+  local keys = {}
+  local i = 1
+
+  if param then
+    for k,_ in fun.iter(gen, param, state) do
+      rawset(keys, i, k)
+      i = i + 1
+    end
+  else
+    for k,_ in pairs(gen) do
+      rawset(keys, i, k)
+      i = i + 1
+    end
+  end
+
+  return keys
+end
+
+---[[[
+-- @function lua_util.values(t)
+-- Returns all values from a specific table
+-- @param {table} t input table
+-- @return array of values
+--]]]
+exports.values = function(gen, param, state)
+  local values = {}
+  local i = 1
+
+  if param then
+    for _,v in fun.iter(gen, param, state) do
+      rawset(values, i, v)
+      i = i + 1
+    end
+  else
+    for _,v in pairs(gen) do
+      rawset(values, i, v)
+      i = i + 1
+    end
+  end
+
+  return values
+end
+
 return exports