Módulo:TesteBossYawnv2
Ir para navegação
Ir para pesquisar
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"}
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|t|itens=" .. itensStr .. ";1}}"
-- 1. Processa o HTML
local html = frame:preprocess(wikiText)
-- 2. REMOVE QUEBRAS DE LINHA (Crucial para não quebrar o JSON)
-- Isso remove os "enters" que o MediaWiki coloca entre as divs
html = html:gsub("\n", ""):gsub("\r", "")
diffData.recompensasRenderizadas = html
end
end
-- Gera o JSON
local jsonData = mw.text.jsonEncode(bossData)
-- Escapa aspas
local safeJson = mw.text.encode(jsonData)
-- Preprocessa o Widget separadamente
local widgetHTML = frame:preprocess("{{#widget:TesteBossYawnv2}}")
-- O SEGREDO: Usamos extensionTag para criar um "nowiki" que protege o JSON.
-- Isso garante que o MediaWiki ignore o conteúdo do data-json durante o parsing da página.
local jsonProtegido = frame:extensionTag('nowiki', safeJson)
return '<div class="boss-component" data-json="' .. jsonProtegido .. '">' .. widgetHTML .. '</div>'
end
return p