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

Материал из Space Station 14 Вики
мНет описания правки
мНет описания правки
Строка 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)
Строка 14: Строка 14:
end
end


-- Функция генерации текста для одного элемента JSON с HTML-разметкой
-- Функция генерации текста для одного элемента JSON
local function generateTemplate(entry)
local function generateTemplate(entry)
     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
Строка 20: Строка 20:
     end
     end
      
      
     -- Сначала создаем таблицу для частей HTML
     local template = string.format(
     local templateParts = {}
        [[
== Краткое описание ==
{{Файл
|Описание =
|Id      = %s
|Сервера  = {{abb|SS14}}
|Источник =
|Путь    = Resources/Textures/%s
|Теги     =  
}}


    -- Добавляем каждый элемент в таблицу
== Лицензирование ==
    table.insert(templateParts, "== Краткое описание ==")
{{CC-BY-SA-3.0}}
    table.insert(templateParts, "{{Файл")
]],
    table.insert(templateParts, "|Описание = ")
        entry.id,
    table.insert(templateParts, "|Id      = " .. entry.id)
        entry.Sprite.sprite
    table.insert(templateParts, "|Сервера  = {{abb|SS14}}")
     )
    table.insert(templateParts, "|Источник = ")
      
    table.insert(templateParts, "|Путь    = Resources/Textures/" .. entry.Sprite.sprite)
     return template
    table.insert(templateParts, "|Теги    = ")
     table.insert(templateParts, "}}")
     table.insert(templateParts, "== Лицензирование ==")
    table.insert(templateParts, "{{CC-BY-SA-3.0}}")
 
    -- Теперь соединяем все части в одну строку
     return table.concat(templateParts, "\n")
end
end


-- Основная функция, формирующая результат для всех записей
-- Основная функция модуля
function p.main(frame)
function p.main(frame)
     local filePath = frame.args[1] -- Путь к JSON
     -- Загрузка данных из JSON-файла
    if not filePath then
     local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
        return "Ошибка: Укажите путь к JSON-файлу."
     if not data or type(data) ~= 'table' then
    end
         return 'Ошибка: Невозможно загрузить данные из JSON.'
   
     local data = loadData(filePath)
     if not data or type(data) ~= "table" then
         return "Ошибка: Невозможно загрузить данные из JSON."
     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)
Строка 61: Строка 59:
     end
     end
      
      
     -- Возвращаем все сгенерированные шаблоны
     -- Возврат собранного результата
     return table.concat(result, "\n")
     return table.concat('<div class="entity-sprite__strings">', result, '</div><div class="copy-icon">📋</div><br>')
end
end


return p
return p

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

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)
    if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
        return nil
    end
    
    local template = string.format(
        [[
== Краткое описание ==
{{Файл
|Описание = 
|Id       = %s
|Сервера  = {{abb|SS14}}
|Источник = 
|Путь     = Resources/Textures/%s
|Теги     = 
}}

== Лицензирование ==
{{CC-BY-SA-3.0}}
]],
        entry.id,
        entry.Sprite.sprite
    )
    
    return template
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
            table.insert(result, template)
        end
    end
    
    -- Возврат собранного результата
    return table.concat('<div class="entity-sprite__strings">', result, '</div><div class="copy-icon">📋</div><br>')
end

return p