26 lines
386 B
Lua
26 lines
386 B
Lua
function _deepcopy(o, tables)
|
|
|
|
if type(o) ~= 'table' then
|
|
return o
|
|
end
|
|
|
|
if tables[o] ~= nil then
|
|
return tables[o]
|
|
end
|
|
|
|
local new_o = {}
|
|
tables[o] = new_o
|
|
|
|
for k, v in next, o, nil do
|
|
local new_k = _deepcopy(k, tables)
|
|
local new_v = _deepcopy(v, tables)
|
|
new_o[new_k] = new_v
|
|
end
|
|
|
|
return new_o
|
|
end
|
|
|
|
function deepcopy(o)
|
|
return _deepcopy(o, {})
|
|
end
|