From 1b5cef0e884b49430d5cac902a366703beef5439 Mon Sep 17 00:00:00 2001 From: Mikhail Galanin Date: Mon, 10 Sep 2018 15:17:14 +0100 Subject: [Minor] Updated Lua to comply the new call semantic --- lualib/lua_util.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'lualib/lua_util.lua') diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua index 0ce0c1874..b8e1dbfad 100644 --- a/lualib/lua_util.lua +++ b/lualib/lua_util.lua @@ -664,6 +664,30 @@ exports.extract_specific_urls = function(params_or_task, lim, need_emails, filte return res end +--[[[ +-- @function lua_util.deepcopy(table) +-- params: { +- - table +-- } +-- Performs deep copy of the table. Including metatables +--]] +local function deepcopy(orig) + local orig_type = type(orig) + local copy + if orig_type == 'table' then + copy = {} + for orig_key, orig_value in next, orig, nil do + copy[deepcopy(orig_key)] = deepcopy(orig_value) + end + setmetatable(copy, deepcopy(getmetatable(orig))) + else -- number, string, boolean, etc + copy = orig + end + return copy +end + +exports.deepcopy = deepcopy + -- Debugging support local unconditional_debug = false local debug_modules = {} -- cgit v1.2.3