|
|
| Строка 1: |
Строка 1: |
| local p = {} | | local p = {} |
| | | function p.info() |
| local cachedData = nil
| | return mw.getCurrentFrame():preprocess("'''Lua Engine:''' " .. mw.ext.scribunto.getEngine()) |
| 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 | | 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 | | return p |
Для документации этого модуля может быть создана страница Модуль:Песочница/Pok/doc
local p = {}
function p.info()
return mw.getCurrentFrame():preprocess("'''Lua Engine:''' " .. mw.ext.scribunto.getEngine())
end
return p