1
0
mirror of https://gitlab.com/the-no-frauds-club/cosmonarchy-bw-release.git synced 2026-09-21 22:31:45 +00:00
cosmonarchy-bw-release/mpq/lua/melee/deepcopy.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