Módulo:ArtilheiroTemporadaSemAssistencia
Ir para navegação
Ir para pesquisar
A documentação para este módulo pode ser criada em Módulo:ArtilheiroTemporadaSemAssistencia/doc
-- Define a tabela 'p' que será o módulo local p = {} -- Função para processar o nome do jogador local function processarNomeJogador(nome) if not nome then return "N/A" end -- Remove colchetes e pipes do nome (ex: [[Nome|Apelido]] -> Nome) local nomeSemColchetes = nome:match("%[%[([^|%]]+)%]%]") or nome:match("%[%[([^|%]]+)%|") or nome nomeSemColchetes = nomeSemColchetes:gsub("^:", "") -- Remove ":" no início, se houver return nomeSemColchetes end -- Função para criar a célula do jogador local function criarCelulaJogador(nome, frame) local nomeProcessado = processarNomeJogador(nome) local templateJogador = string.format("{{%s}}", nomeProcessado) return frame:preprocess(templateJogador) end -- Função para obter a foto do jogador local function obterFotoJogador(nome, frame) local nomeProcessado = processarNomeJogador(nome) local query = string.format("{{#show: %s |?FotoJogador}}", nomeProcessado) return frame:preprocess(query) end -- Função para formatar a contagem de gols local function formatarContagem(quantidade, singular, plural) if quantidade == 1 then return string.format("%d %s", quantidade, singular) else return string.format("%d %s", quantidade, plural) end end -- Função principal para gerar estatísticas de gols function p.artilheiro(frame) local ano = tonumber(frame.args.ano or frame.args[1]) or 2023 local queryGols = string.format("[[AnoJogo::%d]] |?1Gols |?2Gols |?3Gols |?4Gols |?5Gols |?6Gols |?13Gols |?14Gols |?AnoJogo |limit=500", ano) local resultsGols = mw.smw.ask(queryGols) local statsGols = {} -- Processar gols for _, jogo in pairs(resultsGols or {}) do local function somarGols(jogador, multiplicador) if not jogador then return end if type(jogador) == "string" then jogador = {jogador} end for _, nome in ipairs(jogador) do statsGols[nome] = (statsGols[nome] or 0) + multiplicador end end somarGols(jogo["1Gols"], 1) somarGols(jogo["2Gols"], 2) somarGols(jogo["3Gols"], 3) somarGols(jogo["4Gols"], 4) somarGols(jogo["5Gols"], 5) somarGols(jogo["6Gols"], 6) somarGols(jogo["13Gols"], 13) somarGols(jogo["14Gols"], 14) end -- Encontrar artilheiros local artilheiros = {} local maxGols = 0 for nome, gols in pairs(statsGols) do if gols > maxGols then artilheiros = {nome} maxGols = gols elseif gols == maxGols then table.insert(artilheiros, nome) end end -- Se não houver artilheiros, retornar nada if maxGols == 0 then return "" end -- Construir a tabela local tabela = {"{| class=\"wikitable\""} table.insert(tabela, "|colspan=4 align=\"center\"|Artilheiro da Temporada") table.insert(tabela, "|-") for _, nome in ipairs(artilheiros) do table.insert(tabela, "|-") table.insert(tabela, "|align=\"center\"|[[Arquivo:Artilheiro.png|50px|link=]]") table.insert(tabela, "|align=\"left\"| " .. criarCelulaJogador(nome, frame)) table.insert(tabela, "|<center>" .. obterFotoJogador(nome, frame) .. "</center>") table.insert(tabela, "|<center>" .. formatarContagem(maxGols, "gol", "gols") .. "</center>") end table.insert(tabela, "|}") return table.concat(tabela, "\n") end -- Retorna a tabela 'p' como o módulo return p