Модуль:chemcard

Вернуться

Строка 64: Строка 64:
end
end


-- ====================== ИСПРАВЛЕННЫЙ БЛОК ======================
local FILE_PATTERN = "(%[%[File:[^]]+%]%])"
local FILE_PATTERN = "(%[%[File:[^]]+%]%])"   -- правильный Lua-паттерн


local function buildRecipeStepHtml(rec)
local function buildRecipeStepHtml(rec)
Строка 72: Строка 71:
     local inner = html.create("div"):addClass("chem-recipe")
     local inner = html.create("div"):addClass("chem-recipe")


    -- INPUTS
     local inputsDiv = html.create("div"):addClass("recipe-inputs")
     local inputsDiv = html.create("div"):addClass("recipe-inputs")
     for _, it in ipairs(rec.inputs) do
     for _, it in ipairs(rec.inputs) do
         local item = inputsDiv:tag("div"):addClass("recipe-item")
         local item = inputsDiv:tag("div"):addClass("recipe-item")
         item:wikitext('[[File:Beaker.png|36px|class=chem-beaker]] ' .. it.name .. ' [' .. it.qty .. ']')
         item:wikitext('[[File:Beaker.png|36px|class=chem-reagent-icon]] ' .. it.name .. ' [' .. it.qty .. ']')
     end
     end
     inner:node(inputsDiv)
     inner:node(inputsDiv)


    -- ACTION (спрайт строго сверху)
     if rec.action and rec.action ~= "" then
     if rec.action and rec.action ~= "" then
         local actionDiv = inner:tag("div"):addClass("recipe-action")
         local actionDiv = inner:tag("div"):addClass("recipe-action")
         local content = actionDiv:tag("div"):addClass("recipe-action-content")
         local content = actionDiv:tag("div"):addClass("recipe-action-content")


         local sprite = '[[File:Beaker.png|36px|class=chem-beaker]]'
         local sprite = '[[File:Beaker.png|36px|class=chem-reagent-icon]]'
         local actionText = rec.action
         local actionText = rec.action


        -- Ищем кастомный спрайт
         local customSprite = mw.ustring.match(actionText, FILE_PATTERN)
         local customSprite = mw.ustring.match(actionText, FILE_PATTERN)
         if customSprite then
         if customSprite then
Строка 99: Строка 95:
     end
     end


    -- OUTPUTS
     local outputsDiv = html.create("div"):addClass("recipe-outputs")
     local outputsDiv = html.create("div"):addClass("recipe-outputs")
     for _, it in ipairs(rec.outputs) do
     for _, it in ipairs(rec.outputs) do
         local item = outputsDiv:tag("div"):addClass("recipe-item")
         local item = outputsDiv:tag("div"):addClass("recipe-item")
         item:wikitext('[[File:Beaker.png|36px|class=chem-beaker]] ' .. it.name .. ' [' .. it.qty .. ']')
         item:wikitext('[[File:Beaker.png|36px|class=chem-reagent-icon]] ' .. it.name .. ' [' .. it.qty .. ']')
     end
     end
     inner:node(outputsDiv)
     inner:node(outputsDiv)
Строка 109: Строка 104:
     return inner
     return inner
end
end
-- ============================================================


local function buildEffectsHtml(effects)
local function buildEffectsHtml(effects)