Модуль:Entity Sprite: различия между версиями

Материал из Space Station 14 Вики
мНет описания правки
Метка: ручная отмена
мНет описания правки
Строка 1: Строка 1:
local p = {}
local p = {}


-- Загрузка данных
local function loadData(filePath)
local function loadData(filePath)
     local page = mw.title.new(filePath)
     local page = mw.title.new(filePath)
Строка 13: Строка 14:
end
end


local function generateTemplate(entry)
-- Функция генерации текста для одного элемента JSON с выбором параметра
local function generateTemplate(entry, param)
     if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
     if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
         return nil
         return nil
     end
     end
     local result = {}
   
     table.insert(result, mw.getCurrentFrame():preprocess("{{Entity Sprite|" .. entry.id .. "|" .. entry.Sprite.sprite .. "}}"))
     local result = ""
     return table.concat(result)
 
    -- Проверка выбранного параметра
    if param == "image" then
        result = result .. mw.getCurrentFrame():preprocess("{{Entity Sprite/Imege|".. entry.id .."|".. entry.Sprite.sprite .."}}")
     elseif param == "license" then
        result = result .. mw.getCurrentFrame():preprocess("{{Entity Sprite/License|".. entry.id .."|".. entry.Sprite.sprite .."}}")
    end
 
     return result
end
end


-- Основная функция модуля
function p.main(frame)
function p.main(frame)
    local param = frame.args[1] 
   
    -- Проверка на допустимость параметра
    if param ~= "image" and param ~= "license" then
        return 'Ошибка: Неверный параметр. Используйте "image" или "license".'
    end
   
    -- Загрузка данных из JSON-файла
     local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
     local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
     if not data or type(data) ~= 'table' then
     if not data or type(data) ~= 'table' then
Строка 28: Строка 47:
     end
     end
      
      
    -- Создание результата
     local result = {}
     local result = {}
     for _, entry in ipairs(data) do
     for _, entry in ipairs(data) do
         local template = generateTemplate(entry)
         local template = generateTemplate(entry, param)
         if template then
         if template then
             table.insert(result, template)
             table.insert(result, template)
Строка 36: Строка 56:
     end
     end
      
      
    -- Возврат собранного результата
     return table.concat(result)
     return table.concat(result)
end
end


return p
return p

Версия от 20:05, 20 января 2025

Для документации этого модуля может быть создана страница Модуль:Entity Sprite/doc

local p = {}

-- Загрузка данных
local function loadData(filePath)
    local page = mw.title.new(filePath)
    if not page then
        return nil
    end
    local content = page:getContent()
    if not content then
        return nil
    end
    return mw.text.jsonDecode(content)
end

-- Функция генерации текста для одного элемента JSON с выбором параметра
local function generateTemplate(entry, param)
    if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
        return nil
    end
    
    local result = ""

    -- Проверка выбранного параметра 
    if param == "image" then
        result = result .. mw.getCurrentFrame():preprocess("{{Entity Sprite/Imege|".. entry.id .."|".. entry.Sprite.sprite .."}}")
    elseif param == "license" then
        result = result .. mw.getCurrentFrame():preprocess("{{Entity Sprite/License|".. entry.id .."|".. entry.Sprite.sprite .."}}")
    end

    return result
end

-- Основная функция модуля
function p.main(frame)
    local param = frame.args[1]  
    
    -- Проверка на допустимость параметра
    if param ~= "image" and param ~= "license" then
        return 'Ошибка: Неверный параметр. Используйте "image" или "license".'
    end
    
    -- Загрузка данных из JSON-файла
    local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
    if not data or type(data) ~= 'table' then
        return 'Ошибка: Невозможно загрузить данные из JSON.'
    end
    
    -- Создание результата
    local result = {}
    for _, entry in ipairs(data) do
        local template = generateTemplate(entry, param)
        if template then
            table.insert(result, template)
        end
    end
    
    -- Возврат собранного результата
    return table.concat(result)
end

return p