forked from Simnation/Main
20 lines
592 B
Lua
20 lines
592 B
Lua
function deepcopy(orig, copies)
|
|
copies = copies or {}
|
|
local orig_type = type(orig)
|
|
local copy
|
|
if orig_type == 'table' then
|
|
if copies[orig] then
|
|
copy = copies[orig]
|
|
else
|
|
copy = {}
|
|
copies[orig] = copy
|
|
for orig_key, orig_value in next, orig, nil do
|
|
copy[deepcopy(orig_key, copies)] = deepcopy(orig_value, copies)
|
|
end
|
|
setmetatable(copy, deepcopy(getmetatable(orig), copies))
|
|
end
|
|
else -- number, string, boolean, etc
|
|
copy = orig
|
|
end
|
|
return copy
|
|
end
|