summaryrefslogtreecommitdiff
path: root/script/utility.lua
diff options
context:
space:
mode:
Diffstat (limited to 'script/utility.lua')
-rw-r--r--script/utility.lua31
1 files changed, 29 insertions, 2 deletions
diff --git a/script/utility.lua b/script/utility.lua
index 6758a47f..0e4df627 100644
--- a/script/utility.lua
+++ b/script/utility.lua
@@ -21,9 +21,8 @@ local getupvalue = debug.getupvalue
local mathHuge = math.huge
local inf = 1 / 0
local nan = 0 / 0
-local utf8 = utf8
local error = error
-local upvalueid = debug.upvalueid
+local assert = assert
_ENV = nil
@@ -730,4 +729,32 @@ function m.defaultTable(default)
end })
end
+function m.multiTable(count, default)
+ local current
+ if default then
+ current = setmetatable({}, { __index = function (t, k)
+ local v = default(k)
+ t[k] = v
+ return v
+ end })
+ else
+ current = setmetatable({}, { __index = function (t, k)
+ local v = {}
+ t[k] = v
+ return v
+ end })
+ end
+ for _ = 3, count do
+ current = setmetatable({}, { __index = function (t, k)
+ t[k] = current
+ return current
+ end })
+ end
+ return current
+end
+
+m.MODE_K = { __mode = 'k' }
+m.MODE_V = { __mode = 'v' }
+m.MODE_KV = { __mode = 'kv' }
+
return m