Модуль:chemcard
| Строка 63: | Строка 63: | ||
return steps | return steps | ||
end | end | ||
-- ====================== ИСПРАВЛЕННЫЙ БЛОК ====================== | |||
local FILE_PATTERN = "(%[%[File:[^]]+%]%])" -- правильный Lua-паттерн | |||
local function buildRecipeStepHtml(rec) | local function buildRecipeStepHtml(rec) | ||
| Строка 77: | Строка 80: | ||
inner:node(inputsDiv) | inner:node(inputsDiv) | ||
-- ACTION (спрайт строго сверху | -- 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") | ||
| Строка 85: | Строка 88: | ||
local actionText = rec.action | local actionText = rec.action | ||
-- | -- Ищем кастомный спрайт | ||
local customSprite = mw.ustring.match(actionText, | local customSprite = mw.ustring.match(actionText, FILE_PATTERN) | ||
if customSprite then | if customSprite then | ||
sprite = customSprite | sprite = customSprite | ||
actionText = mw.text.trim(mw.ustring.gsub(actionText, | actionText = mw.text.trim(mw.ustring.gsub(actionText, FILE_PATTERN, "")) | ||
end | end | ||
| Строка 106: | Строка 109: | ||
return inner | return inner | ||
end | end | ||
-- ============================================================ | |||
local function buildEffectsHtml(effects) | local function buildEffectsHtml(effects) | ||
| Строка 136: | Строка 140: | ||
local desc = args.desc or "" | local desc = args.desc or "" | ||
local variants = {} | local variants = {} | ||
local i = 1 | local i = 1 | ||
| Строка 166: | Строка 169: | ||
for vidx, variant in ipairs(variants) do | for vidx, variant in ipairs(variants) do | ||
if #variants > 1 then | if #variants > 1 then | ||
local varHeader = stepsContainer:tag("div"):addClass("recipe-variant-header") | local varHeader = stepsContainer:tag("div"):addClass("recipe-variant-header") | ||