Модуль:Entity Sprite

Материал из Space Station 14 Вики
local p = {}

-- Функция загрузки данных из JSON-страницы
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)
    if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
        return nil
    end
    
    local template = 
        "== Краткое описание ==\n" ..
        "{{Файл\n" ..
        "|Описание = \n" ..
        "|Id       = %s\n" ..
        "|Сервера  = {{abb|SS14}}\n" ..
        "|Источник = \n" ..
        "|Путь     = Resources/Textures/%s\n" ..
        "|Теги     = \n" ..
        "}}\n\n" ..
        "== Лицензирование ==\n" ..
        "{{CC-BY-SA-3.0}}\n"
    
    return string.format(template, entry.id, entry.Sprite.sprite)
end

-- Функция для обёртки текста в HTML с классом
local function wrapInClass(content, className)
    return string.format('<div class="%s">%s</div>', className, content)
end

-- Функция для добавления кнопки копирования
local function addCopyIcon(content)
    return content .. '<div class="copy-icon">📋</div>'
end

-- Основная функция модуля
function p.main(frame)
    -- Загрузка данных из указанного 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)
        if template then
            -- Оборачиваем текст в класс
            local wrappedTemplate = wrapInClass(template, "entity-sprite__strings")
            -- Добавляем кнопку копирования
            local finalTemplate = addCopyIcon(wrappedTemplate)
            table.insert(result, finalTemplate)
        end
    end
    
    -- Возврат собранного результата
    return table.concat(result, "\n")
end

return p