Модуль:Meta Sprite: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 16: | Строка 16: | ||
local mode = frame.args[1] -- Режим | local mode = frame.args[1] -- Режим | ||
local filePath = require("Module:FilePath") | local filePath = require("Module:FilePath") | ||
local path = filePath.getOthersPath("".. | local path2 = frame.args[2] | ||
local path = filePath.getOthersPath(""..path2.."") -- Путь | |||
if not mode or not path then | if not mode or not path then | ||
Версия от 01:32, 20 февраля 2025
Для документации этого модуля может быть создана страница Модуль:Meta Sprite/doc
-- Загрузка данных
local data = mw.loadData("Модуль:IanComradeBot/meta sprite.json/data")
local p = {}
-- Функция для разделения строки по разделителю
local function split(str, delimiter)
local result = {}
for token in string.gmatch(str, "([^" .. delimiter .. "]+)") do
table.insert(result, token)
end
return result
end
function p.main(frame)
local mode = frame.args[1] -- Режим
local filePath = require("Module:FilePath")
local path2 = frame.args[2]
local path = filePath.getOthersPath(""..path2.."") -- Путь
if not mode or not path then
return "Ошибка: необходимо указать режим и путь."
end
-- Поиск точного совпадение
local entry = data[path]
-- Если не найдено, ищем по последним трём сегментам пути
if not entry then
local segments = split(path, "/")
local count = #segments
local suffix
if count >= 3 then
suffix = table.concat({ segments[count-2], segments[count-1], segments[count] }, "/")
else
suffix = path
end
-- Ищем среди всех ключей, заканчивающихся на полученный суффикс
for key, value in pairs(data) do
if key:sub(-#suffix) == suffix then
entry = value
break
end
end
if not entry then
return ""
end
end
local result = entry[mode]
if not result then
return "Ошибка: указанный режим не найден в данных."
end
return result
end
return p