Модуль:Prototypes/Хранилище/Предмет: различия между версиями

мНет описания правки
мНет описания правки
Строка 1: Строка 1:
local p = {}
local p = {}
local cache = {
    items = nil,
    selectors = nil
}


-- Функции как локальные переменные, которые будут привязаны позже
-- Функции как локальные переменные, которые будут привязаны позже
local getContentsOutput, processNestedSelectors, getTableOutput, getContainedOutput, getChemOutput
local loadData, findDataById, formatContent, getContentsOutput, processNestedSelectors, getTableOutput, getContainedOutput, getChemOutput
 
-- Функция для загрузки данных с кешированием
local function loadData(filePath, cacheKey)
    if cache[cacheKey] then
        return cache[cacheKey]
    end


-- Функция для загрузки данных без кеширования
loadData = function(filePath)
     local page = mw.title.new(filePath)
     local page = mw.title.new(filePath)
     local content = page:getContent()
     local content = page:getContent()
     local data = content and mw.text.jsonDecode(content) or nil
     return content and mw.text.jsonDecode(content) or nil
 
    if data then
        cache[cacheKey] = data
    end
    return data
end
end


-- Поиск данных по ID
-- Поиск данных по ID
local function findDataById(data, id)
findDataById = function(data, id)
     if not data then return nil end
     if not data then return nil end
     for _, item in ipairs(data) do
     for _, item in ipairs(data) do
Строка 37: Строка 23:


-- Форматирование одного содержимого
-- Форматирование одного содержимого
local function formatContent(content)
formatContent = function(content)
     local name = string.format('{{#invoke:Entity Lookup|getname|%s}}', content.id)
     local name = string.format('{{#invoke:Entity Lookup|getname|%s}}', content.id)
     local image = string.format('%s.png', content.id)
     local image = string.format('%s.png', content.id)
Строка 79: Строка 65:
-- Обработка таблиц
-- Обработка таблиц
getTableOutput = function(tableId)
getTableOutput = function(tableId)
     local allSelectors = loadData('User:IanComradeBot/prototypes/AllSelector.json', 'selectors')
     local allSelectors = loadData('User:IanComradeBot/prototypes/AllSelector.json')
     local tableData = findDataById(allSelectors, tableId)
     local tableData = findDataById(allSelectors, tableId)
     local children = tableData and tableData['!type:AllSelector'] and tableData['!type:AllSelector'].children
     local children = tableData and tableData['!type:AllSelector'] and tableData['!type:AllSelector'].children