Модуль:Entity Sprite: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
-- | -- Функция загрузки данных из JSON-страницы | ||
local function loadData(filePath) | local function loadData(filePath) | ||
local page = mw.title.new(filePath) | local page = mw.title.new(filePath) | ||
Строка 20: | Строка 20: | ||
end | end | ||
local | 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 | |||
return | -- Функция для добавления кнопки копирования | ||
local function addCopyIcon(content) | |||
return content .. '<div class="copy-icon">📋</div>' | |||
end | end | ||
-- Основная функция модуля | -- Основная функция модуля | ||
function p.main(frame) | function p.main(frame) | ||
-- Загрузка данных из JSON-файла | -- Загрузка данных из указанного JSON-файла | ||
local data = loadData( | local data = loadData("User:IanComradeBot/prototypes/entity sprite.json") | ||
if not data or type(data) ~= | if not data or type(data) ~= "table" then | ||
return | return "Ошибка: Невозможно загрузить данные из JSON." | ||
end | end | ||
Строка 56: | Строка 59: | ||
local template = generateTemplate(entry) | local template = generateTemplate(entry) | ||
if template then | if template then | ||
table.insert(result, | -- Оборачиваем текст в класс | ||
local wrappedTemplate = wrapInClass(template, "entity-sprite__strings") | |||
-- Добавляем кнопку копирования | |||
local finalTemplate = addCopyIcon(wrappedTemplate) | |||
table.insert(result, finalTemplate) | |||
end | end | ||
end | end | ||
-- Возврат собранного результата | -- Возврат собранного результата | ||
return table.concat(result, | return table.concat(result, "\n") | ||
end | end | ||
return p | return p |
Версия от 17:55, 20 января 2025
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