mirror of
https://gitlab.com/the-no-frauds-club/cosmonarchy-bw-prerelease.git
synced 2026-09-17 01:01:12 +00:00
21 lines
480 B
Lua
21 lines
480 B
Lua
---@param original any
|
|
---@param seen? table
|
|
---@return any
|
|
function deepcopy(original, seen)
|
|
if type(original) ~= "table" then
|
|
return original
|
|
end
|
|
|
|
seen = seen or {}
|
|
if seen[original] then
|
|
return seen[original]
|
|
end
|
|
|
|
local copy = {}
|
|
seen[original] = copy
|
|
for key, value in pairs(original) do
|
|
copy[deepcopy(key, seen)] = deepcopy(value, seen)
|
|
end
|
|
return setmetatable(copy, deepcopy(getmetatable(original), seen))
|
|
end
|