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

Нет описания правки
Метка: ручная отмена
мНет описания правки
Строка 5: Строка 5:
     selectors = nil
     selectors = nil
}
}
-- Функции как локальные переменные, которые будут привязаны позже
local loadData, findDataById, formatContent, getContentsOutput, processNestedSelectors, getTableOutput, getContainedOutput, getChemOutput


-- Функция для загрузки данных с кешированием
-- Функция для загрузки данных с кешированием
local function loadData(filePath, cacheKey)
loadData = function(filePath, cacheKey)
     if cache[cacheKey] then
     if cache[cacheKey] then
         return cache[cacheKey]
         return cache[cacheKey]
Строка 23: Строка 26:


-- Поиск данных по 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
Строка 34: Строка 37:


-- Форматирование одного содержимого
-- Форматирование одного содержимого
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)
Строка 53: Строка 56:


-- Получение содержимого
-- Получение содержимого
local function getContentsOutput(contents)
getContentsOutput = function(contents)
     local result = ''
     local result = ''
     for _, content in ipairs(contents) do
     for _, content in ipairs(contents) do
Строка 62: Строка 65:


-- Обработка вложенных таблиц
-- Обработка вложенных таблиц
local function processNestedSelectors(children)
processNestedSelectors = function(children)
     local result = ''
     local result = ''
     for _, child in ipairs(children) do
     for _, child in ipairs(children) do
Строка 75: Строка 78:


-- Обработка таблиц
-- Обработка таблиц
local function getTableOutput(tableId)
getTableOutput = function(tableId)
     local allSelectors = loadData('User:IanComradeBot/prototypes/AllSelector.json', 'selectors')
     local allSelectors = loadData('User:IanComradeBot/prototypes/AllSelector.json', 'selectors')
     local tableData = findDataById(allSelectors, tableId)
     local tableData = findDataById(allSelectors, tableId)
Строка 86: Строка 89:


-- Формирование списка содержащихся предметов или таблиц
-- Формирование списка содержащихся предметов или таблиц
local function getContainedOutput(data, id, wrapped)
getContainedOutput = function(data, id, wrapped)
     local item = findDataById(data, id)
     local item = findDataById(data, id)
     if not item then return '' end
     if not item then return '' end
Строка 110: Строка 113:


-- Формирование списка химии
-- Формирование списка химии
local function getChemOutput(data, id)
getChemOutput = function(data, id)
     local item = findDataById(data, id)
     local item = findDataById(data, id)
     if not item then return '' end
     if not item then return '' end