Модуль: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