Модуль:Песочница/Pok: различия между версиями
Pok (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
Pok (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
||
| Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
function p. | local cachedData = nil | ||
local | local loadCount = 0 | ||
local cache = mw.ext.LuaCache and mw.ext.LuaCache.get("entity_data_cache") | |||
local function loadData(filePath) | |||
if cachedData then | |||
loadCount = loadCount + 1 | |||
return cachedData | |||
end | |||
if cache then | |||
local cachedContent = cache:get(filePath) | |||
if cachedContent then | |||
cachedData = mw.text.jsonDecode(cachedContent) | |||
return cachedData | |||
end | |||
end | |||
loadCount = loadCount + 1 | |||
local page = mw.title.new(filePath) | |||
local content = page and page:getContent() | |||
cachedData = content and mw.text.jsonDecode(content) or nil | |||
if cachedData and cache then | |||
cache:set(filePath, content, 3600) | |||
end | |||
return cachedData | |||
end | |||
function p.main(frame) | |||
local param = frame.args[1] | |||
local secondaryParam = frame.args[2] | |||
local data = loadData('User:IanComradeBot/prototypes/entity sprite.json') | |||
if not data then | |||
return 'Ошибка: Невозможно загрузить данные из JSON.' | |||
end | |||
if param == "debug" then | |||
return "Количество загрузок JSON: " .. loadCount | |||
end | |||
if param == "image" and secondaryParam then | |||
for _, entry in ipairs(data) do | |||
if entry.id == secondaryParam then | |||
return entry.Sprite and entry.Sprite.sprite or (entry.Icon and entry.Icon.sprite) or "Ошибка: Спрайт не найден." | |||
end | |||
end | |||
return "Ошибка: ID не найден." | |||
end | |||
end | end | ||
return p | return p | ||