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

мНет описания правки
Нет описания правки
Строка 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)
Строка 14: Строка 13:
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 nil
         return nil
     end
     end
      
     local result = {}
local result = {}
    table.insert(result, mw.getCurrentFrame():preprocess("{{Entity Sprite|" .. entry.id .. "|" .. entry.Sprite.sprite .. "}}"))
result[#result + 1] = mw.getCurrentFrame():preprocess("{{Entity Sprite|".. entry.id .."|".. entry.Sprite.sprite .."}}")
    return table.concat(result)
return table.concat(result)
 
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
Строка 35: Строка 28:
     end
     end
      
      
    -- Создание результата
     local result = {}
     local result = {}
    local count = 0
     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)
             table.insert(result, template)
        end
        count = count + 1
        if count % 1000 == 0 then
            collectgarbage("collect")
         end
         end
     end
     end
      
      
    -- Возврат собранного результата
     return table.concat(result)
     return table.concat(result)
end
end
collectgarbage("setpause", 100)
collectgarbage("setstepmul", 5000)


return p
return p