Add minetest.copy_table(table) To get rid off the "table references"

Signed-off-by: Craig Robbins <kde.psych@gmail.com>
This commit is contained in:
SmallJoker 2014-10-04 19:23:15 +02:00 committed by Craig Robbins
parent 77137a92cf
commit 6a43b3af09
2 changed files with 14 additions and 0 deletions

@ -490,6 +490,18 @@ function core.pos_to_string(pos)
return "(" .. pos.x .. "," .. pos.y .. "," .. pos.z .. ")" return "(" .. pos.x .. "," .. pos.y .. "," .. pos.z .. ")"
end end
--------------------------------------------------------------------------------
function table.copy(t, seen)
local n = {}
seen = seen or {}
seen[t] = n
for k, v in pairs(t) do
n[type(k) ~= "table" and k or seen[k] or table.copy(k, seen)] =
type(v) ~= "table" and v or seen[v] or table.copy(v, seen)
end
return n
end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- mainmenu only functions -- mainmenu only functions
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

@ -1310,6 +1310,8 @@ minetest.is_yes(arg)
^ returns whether arg can be interpreted as yes ^ returns whether arg can be interpreted as yes
minetest.get_us_time() minetest.get_us_time()
^ returns time with microsecond precision ^ returns time with microsecond precision
table.copy(table) -> table
^ returns a deep copy of a table
minetest namespace reference minetest namespace reference
----------------------------- -----------------------------