Модуль:Песочница/Pok: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 3: | Строка 3: | ||
local cachedData = nil | local cachedData = nil | ||
local loadCount = 0 | local loadCount = 0 | ||
local cache = mw.ext.LuaCache and mw.ext.LuaCache.get("entity_data_cache") | |||
local function loadData(filePath) | local function loadData(filePath) | ||
| Строка 8: | Строка 10: | ||
return cachedData | return cachedData | ||
end | end | ||
if cache then | |||
local cachedContent = cache:get(filePath) | |||
if cachedContent then | |||
cachedData = mw.text.jsonDecode(cachedContent) | |||
return cachedData | |||
end | |||
end | |||
loadCount = loadCount + 1 | loadCount = loadCount + 1 | ||
local page = mw.title.new(filePath) | local page = mw.title.new(filePath) | ||
local content = page and page:getContent() | local content = page and page:getContent() | ||
cachedData = content and mw.text.jsonDecode(content) or nil | cachedData = content and mw.text.jsonDecode(content) or nil | ||
if cachedData and cache then | |||
cache:set(filePath, content, 3600) | |||
end | |||
return cachedData | return cachedData | ||
end | end | ||
Версия от 12:33, 3 февраля 2025
Для документации этого модуля может быть создана страница Модуль:Песочница/Pok/doc
local p = {}
local cachedData = nil
local loadCount = 0
local cache = mw.ext.LuaCache and mw.ext.LuaCache.get("entity_data_cache")
local function loadData(filePath)
if cachedData then
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
return p