Модуль:GetField: различия между версиями
Pok (обсуждение | вклад) мНет описания правки Метки: ручная отмена отменено |
Pok (обсуждение | вклад) мНет описания правки Метка: ручная отмена |
||
| Строка 136: | Строка 136: | ||
local moduleName = "Module:" .. baseUser .. pagePath .. "/data" | local moduleName = "Module:" .. baseUser .. pagePath .. "/data" | ||
local ok, data = pcall(mw.loadData, moduleName) | local ok, data = pcall(mw.loadData, moduleName) | ||
if not ok or not data then | if not ok or not data then return "" end | ||
local entry = data[id] or data["default"] or {} | |||
if type(entry) ~= "table" then | |||
return "" | return "" | ||
end | end | ||
local | local parts = {} | ||
local function walk(tbl, prefix) | local function walk(tbl, prefix) | ||
local keys = {} | |||
for k in pairs(tbl) do table.insert(keys, k) end | |||
table.sort(keys, function(a, b) return tostring(a) < tostring(b) end) | |||
for _, k in ipairs(keys) do | |||
local v = tbl[k] | |||
local key = (prefix == "" and tostring(k) or prefix .. "." .. tostring(k)) | |||
if type(v) == "table" then | |||
walk(v, key) | |||
else | |||
table.insert(parts, key .. "=" .. tostring(v)) | |||
end | end | ||
end | end | ||
| Строка 176: | Строка 160: | ||
walk(entry, "") | walk(entry, "") | ||
return table.concat(parts, "|") | return table.concat(parts, "|") | ||
end | end | ||
return p | return p | ||