|
Метки: очистка ручная отмена |
| (не показано 7 промежуточных версий этого же участника) |
| Строка 1: |
Строка 1: |
| local p = {}
| |
|
| |
|
| function p.main(frame)
| |
| local args = frame:getParent().args
| |
|
| |
| local name = args.name or "Без названия"
| |
| local recipe = args.recipe or ""
| |
| local effects = args.effects or "Нет описания."
| |
| local method = (recipe ~= "" and "Смешайте") or "Неизвестно"
| |
|
| |
| local function formatReagents(input)
| |
| local result = {}
| |
| for item in mw.text.gsplit(input, ",") do
| |
| local trimmed = mw.text.trim(item)
| |
| local rname, qty = trimmed:match("^(.-)%s*%[(%d+)%]$")
| |
| if rname and qty then
| |
| table.insert(result, string.format(
| |
| '<div class="reagent-item">🧪 <span class="reagent">%s</span> <span class="qty">[%s]</span></div>',
| |
| mw.text.nowiki(rname), mw.text.nowiki(qty)
| |
| ))
| |
| else
| |
| table.insert(result, '<div class="reagent-item">' .. mw.text.nowiki(trimmed) .. '</div>')
| |
| end
| |
| end
| |
| return table.concat(result)
| |
| end
| |
|
| |
| local function makeCollapsible(title, body)
| |
| return string.format([[
| |
| <div class="collapsible-container">
| |
| <div class="collapsible-header" onclick="this.nextElementSibling.classList.toggle('collapsed')">%s</div>
| |
| <div class="collapsible-body collapsed">%s</div>
| |
| </div>]], title, body)
| |
| end
| |
|
| |
| -- Главный HTML блок
| |
| local html = {}
| |
| table.insert(html, '<div class="alchemy-card">')
| |
|
| |
| table.insert(html, '<div class="alchemy-title">' .. name .. '</div>')
| |
|
| |
| table.insert(html, '<div class="alchemy-section">')
| |
| table.insert(html, makeCollapsible("Рецепт", formatReagents(recipe) .. '<div class="method">🔄 ' .. method .. '</div>'))
| |
| table.insert(html, '</div>')
| |
|
| |
| table.insert(html, '<div class="alchemy-section">')
| |
| table.insert(html, makeCollapsible("Эффекты", effects))
| |
| table.insert(html, '</div>')
| |
|
| |
| table.insert(html, '</div>') -- end alchemy-card
| |
|
| |
| return table.concat(html, "\n")
| |
| end
| |
|
| |
| return p
| |