diff options
Diffstat (limited to 'util.lua')
| -rw-r--r-- | util.lua | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/util.lua b/util.lua new file mode 100644 index 0000000..a639ca2 --- /dev/null +++ b/util.lua @@ -0,0 +1,30 @@ + +local M = {} + +function M.copy(t) + local c = {} + for k,v in pairs(t) do + c[k] = v + end + return c +end + +function M.deepcopy(t) + local copied = {} + local function dc(t) + if not copied[t] then + local c = {} + copied[t] = c + for k,v in pairs(t) do + if type(v) == 'table' then + v = dc(v) + end + c[k] = v + end + end + return copied[t] + end + return dc(t) +end + +return M |
