Модуль:Специальные утилиты
Материал из Playzone Minecraft Wiki
Для документации этого модуля может быть создана страница Модуль:Специальные утилиты/doc
local p = {}
-- Добавление именованных значений, с обработкой повторяющихся ключей
local function tryInsertKey(thetable, key, value, strict)
local try = 1
local inserted = false
local _key = key
repeat
if thetable[_key] == nil then
table.insert(thetable, _key, value)
inserted = true
else
if strict then
error("Ключ " .. key .. " встречается в нескольких таблицах при том, что их обработка здесь была запрещена.")
else
try = try + 1
_key = key .. try
end
end
until inserted
end
-- Объединяет несколько таблиц вместе.
function p.jointables(tables, strict)
local newt = {}
if #tables == 1 then
return tables[1]
elseif #tables == 0 then
return {}
end
if strict == nil then
strict = false
end
for i, t in ipairs(tables) do
if type(t) == 'table' then
for k, v in pairs(tables) do
if type(k) == 'number' then
table.insert(newt, v)
else
tryInsertKey(newt, k, v, strict)
end
end
else
error("Среди таблиц обнаружен объект, таблицей не являющейся.")
end
end
return newt
end