From: Vsevolod Stakhov Date: Tue, 2 Jul 2019 11:49:42 +0000 (+0100) Subject: [Minor] Add universal keys and values functions X-Git-Tag: 2.0~682 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65e9bfb52e614fd83ab3dbbe7124d8f2d18761e7;p=thirdparty%2Frspamd.git [Minor] Add universal keys and values functions --- diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua index e8dc574297..fc4f33c83c 100644 --- a/lualib/lua_util.lua +++ b/lualib/lua_util.lua @@ -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