Mudanças entre as edições de "Módulo:TesteBossYawnv2"
Ir para navegação
Ir para pesquisar
| Linha 25: | Linha 25: | ||
if diffData and diffData.recompensasPossiveis then | if diffData and diffData.recompensasPossiveis then | ||
local itensStr = table.concat(diffData.recompensasPossiveis, ";") | local itensStr = table.concat(diffData.recompensasPossiveis, ";") | ||
local wikiText = "{{Reward | local wikiText = "{{Reward|itens=" .. itensStr .. "}}" | ||
-- Processa o HTML das imagens e tooltips | -- Processa o HTML das imagens e tooltips | ||
Edição das 00h03min de 10 de abril de 2026
A documentação para este módulo pode ser criada em Módulo:TesteBossYawnv2/doc
local p = {}
function p.loadBossData(bossName)
local normalizedName = bossName:gsub("^%l", string.upper)
local success, bossData = pcall(function()
return require("Módulo:" .. normalizedName .. "/data")
end)
return success and bossData or nil
end
function p.render(frame)
local bossName = frame.args.boss
if not bossName or bossName == "" then return "Erro: Boss não especificado." end
local bossData = p.loadBossData(bossName)
if not bossData then return "Erro: Dados não encontrados." end
local diffs = {"normal", "elite", "hard"}
-- Aqui vamos guardar os HTMLs gerados fora do JSON
local elementosOcultos = ""
for _, diffKey in ipairs(diffs) do
local diffData = bossData[diffKey]
if diffData and diffData.recompensasPossiveis then
local itensStr = table.concat(diffData.recompensasPossiveis, ";")
local wikiText = "{{Reward|itens=" .. itensStr .. "}}"
-- Processa o HTML das imagens e tooltips
local htmlRenderizado = frame:preprocess(wikiText)
-- O SEGREDO: Em vez de por no JSON, criamos uma div oculta com o HTML pronto!
elementosOcultos = elementosOcultos .. '<div class="boss-html-recompensas" data-diff="' .. diffKey .. '" style="display:none;">' .. htmlRenderizado .. '</div>'
end
end
-- Gera o JSON (agora ele está minúsculo e inofensivo, contendo apenas os textos básicos)
local jsonData = mw.text.jsonEncode(bossData)
-- Escapa aspas para o HTML de forma segura
local safeJson = mw.text.encode(jsonData)
-- Carrega o Widget
local widgetHTML = frame:preprocess("{{#widget:TesteBossYawnv2}}")
-- Monta a estrutura final: A div principal contém o JSON leve, as divs ocultas e o Widget
return '<div class="boss-component" data-json="' .. safeJson .. '">' .. elementosOcultos .. widgetHTML .. '</div>'
end
return p