Модуль:Entity Sprite
Материал из Space Station 14 Вики
Версия от 17:55, 20 января 2025; Pok (обсуждение | вклад)
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