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

Материал из Space Station 14 Вики
мНет описания правки
мНет описания правки
Строка 1: Строка 1:
local p = {}
local p = {}


-- Загрузка данных
local function loadData(filePath)
local function loadData(filePath)
     local page = mw.title.new(filePath)
     local page = mw.title.new(filePath)
     if not page then
     if not page then return nil end
        return nil
    end
     local content = page:getContent()
     local content = page:getContent()
     if not content then
     if not content then return nil end
        return nil
    end
     return mw.text.jsonDecode(content)
     return mw.text.jsonDecode(content)
end
end


-- Функция генерации текста для одного элемента 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 return "" end
        return nil
    end
   
     return string.format(
     return string.format(
         [[
         [[<div class="entity-sprite__strings">== Краткое описание =={{Файл<br>|Описание = <br>|Id      = %s<br>|Сервера  = {{abb|SS14}}<br>|Источник = <br>|Путь    = Resources/Textures/%s<br>|Теги    = <br>}}<br>== Лицензирование ==<br>{{CC-BY-SA-3.0}}<br></div><div class="copy-icon">📋</div><br>]],
<div class="entity-sprite__strings">== Краткое описание =={{Файл<br>|Id      = %s<br>|Сервера  = {{abb|SS14}}<br>|Путь    = Resources/Textures/%s<br>}}<br></div><div class="copy-icon">📋</div><br>
         entry.id, entry.Sprite.sprite
]],
         entry.id,
        entry.Sprite.sprite
     )
     )
end
end


-- Основная функция модуля
function p.main(frame)
function p.main(frame)
    -- Загрузка данных из JSON-файла
     local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
     local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
     if not data or type(data) ~= 'table' then
     if not data or type(data) ~= 'table' then return 'Ошибка: Невозможно загрузить данные из JSON.' end
        return 'Ошибка: Невозможно загрузить данные из JSON.'
 
    end
   
     local result = {}
     local result = {}
    local append = table.insert


     for _, entry in ipairs(data) do
     for _, entry in ipairs(data) do
         local template = generateTemplate(entry)
         local template = generateTemplate(entry)
         if template then
         if template ~= "" then
             table.insert(result, template)
             append(result, template)
         end
         end
     end
     end
   
 
     return table.concat(result, "\n")
     return table.concat(result)
end
end


return p
return p

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

Для документации этого модуля может быть создана страница Модуль:Entity Sprite/doc

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

local function generateTemplate(entry)
    if not entry.id or not entry.Sprite or not entry.Sprite.sprite then return "" end
    return string.format(
        [[<div class="entity-sprite__strings">== Краткое описание =={{Файл<br>|Описание = <br>|Id       = %s<br>|Сервера  = {{abb|SS14}}<br>|Источник = <br>|Путь     = Resources/Textures/%s<br>|Теги     = <br>}}<br>== Лицензирование ==<br>{{CC-BY-SA-3.0}}<br></div><div class="copy-icon">📋</div><br>]],
        entry.id, entry.Sprite.sprite
    )
end

function p.main(frame)
    local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
    if not data or type(data) ~= 'table' then return 'Ошибка: Невозможно загрузить данные из JSON.' end

    local result = {}
    local append = table.insert

    for _, entry in ipairs(data) do
        local template = generateTemplate(entry)
        if template ~= "" then
            append(result, template)
        end
    end

    return table.concat(result)
end

return p