Módulo:Temporada/Partidas: mudanças entre as edições
Criou página com '-- Module:Temporada/Partidas -- Modelo lógico de partidas de uma temporada -- Não gera saída visual direta -- Depende de Module:Temporada/Utils -- Projeto Wiki Galo Digital local Utils = require("Module:Temporada/Utils") local Partidas = {} -------------------------------------------------- -- Cria e normaliza uma partida -------------------------------------------------- function Partidas.criar(args) local partida = {} -- Identificação básica partida.id = U...' |
Sem resumo de edição |
||
| Linha 134: | Linha 134: | ||
return nil | return nil | ||
end | end | ||
-------------------------------------------------- | |||
-- Renderiza uma linha da tabela de partidas | |||
-------------------------------------------------- | |||
function Partidas.render(frame) | |||
local args = frame.args | |||
local partida = Partidas.criar(args) | |||
local mandante = partida.mandante | |||
local visitante = partida.visitante | |||
-- Negrito automático no Atlético | |||
if Utils.isAtletico(mandante) then | |||
mandante = "'''" .. mandante .. "'''" | |||
end | |||
if Utils.isAtletico(visitante) then | |||
visitante = "'''" .. visitante .. "'''" | |||
end | |||
local placar = partida.gols_mandante .. " x " .. partida.gols_visitante | |||
return string.format([[ | |||
|- class="%s" | |||
| %s | |||
| %s | |||
| %s | |||
| %s | |||
| %s | |||
| %s | |||
| class="%s gd-score" | %s | |||
| %s | |||
| %s | |||
| %s | |||
]], | |||
partida.css_mandante, | |||
args.id or "-", | |||
partida.competicao or "-", | |||
partida.rodada or "-", | |||
partida.data or "-", | |||
args.gols_mandante_autores or "Não identificado", | |||
mandante, | |||
partida.css_mandante, | |||
placar, | |||
visitante, | |||
args.gols_visitante_autores or "Não houve", | |||
partida.estadio ~= "" and partida.estadio or partida.localidade or "-" | |||
) | |||
end | |||
return Partidas | return Partidas | ||
Edição das 16h04min de 24 de janeiro de 2026
Módulo:Temporada/Partidas
O Módulo:Temporada/Partidas define o modelo lógico das partidas de uma temporada e é responsável pela renderização das linhas individuais e da lista completa de jogos no projeto Wiki Galo Digital.
Ele atua como ponte entre os dados brutos da temporada e a apresentação tabular das partidas.
---
Escopo e responsabilidades
Este módulo é responsável por:
- Criar o objeto lógico Partida
- Normalizar e validar dados das partidas
- Calcular resultado do Atlético (V, E, D)
- Renderizar:
- Linha individual da tabela de partidas
- Lista completa de partidas da temporada
- Centralizar regras de apresentação do placar
---
Dependências
Este módulo depende diretamente de:
Module:Temporada/Utils
E consome dados exclusivamente de:
Module:Temporada/Dados/ANO
---
Estrutura do objeto Partida
O objeto Partida contém os seguintes campos:
- Identificação
idanodatacompeticaorodada
- Local
estadiolocalidade
- Times
mandantevisitante
- Placar
gols_mandantegols_visitante
- Autores dos gols
autores_mandanteautores_visitante
- Flags de controle
woanuladaconta
- Resultados calculados
resultado_mandanteresultado_visitante
---
Funções internas
linkTime(nome)
Gera link condicional para nomes de times.
- Atlético Mineiro é exibido em negrito, sem link
- Outros times são linkados automaticamente
---
linkarAutores(lista)
Processa lista de autores de gols:
- Remove contagem do nome do link
- Preserva sufixos como "(2)", "(3)"
- Retorna lista formatada e linkada
---
placarExibido(p)
Determina o placar exibido:
- Considera partidas decididas por W.O
- Retorna formato padrão "
x" quando aplicável
---
renderLinha(p)
Renderiza uma linha completa da tabela de partidas.
Inclui:
- Súmula
- Competição
- Rodada
- Data
- Autores dos gols
- Mandante e visitante
- Placar com classe CSS
- Estádio ou localidade
---
Funções públicas
criar(args)
Cria o objeto lógico Partida a partir dos dados brutos.
- Normaliza parâmetros
- Aplica validações defensivas
- Calcula resultados automaticamente
---
resultadoDoAtletico(p)
Retorna o resultado do Atlético na partida.
- Identifica se o clube foi mandante ou visitante
- Retorna
V,EouD
---
renderLista(frame)
Renderiza a lista completa de partidas de uma temporada.
- Parâmetro
frame.args.ano
- Fluxo
- Carrega dados do ano
- Cria objetos Partida
- Renderiza cada linha
- Retorna tabela consolidada
---
obterPorAno(ano)
Obtém a lista de partidas de uma temporada específica.
- Parâmetro
ano
- Retorno
- Lista de partidas ou lista vazia
---
Regras de validação
- Partidas anuladas não são contabilizadas
- Partidas marcadas como não contabilizáveis são ignoradas
- Campos vazios recebem valores padrão
- Erros são tratados sem interromper renderização
---
Boas práticas e manutenção
- Não duplicar lógica de normalização (usar Utils)
- Manter consistência entre modelo lógico e renderização
- Alterações no objeto Partida exigem revisão em:
- Estatísticas
- Campanhas
- Templates
- Novos campos devem ser documentados
---
Páginas relacionadas
- Módulo:Temporada
- Módulo:Temporada/Utils
- Módulo:Temporada/Estatisticas
- Módulo:Temporada/Dados/1919
- Predefinição:Partida
---
Histórico
- Módulo criado para padronizar o tratamento de partidas
- Centraliza regras de renderização e normalização
- Projetado para escalabilidade por temporada
-- Module:Temporada/Partidas
-- Modelo lógico de partidas de uma temporada
-- Não gera saída visual direta
-- Depende de Module:Temporada/Utils
-- Projeto Wiki Galo Digital
local Utils = require("Module:Temporada/Utils")
local Partidas = {}
--------------------------------------------------
-- Cria e normaliza uma partida
--------------------------------------------------
function Partidas.criar(args)
local partida = {}
-- Identificação básica
partida.id = Utils.normalizeString(args.id)
partida.data = Utils.normalizeString(args.data)
partida.competicao = Utils.normalizeString(args.competicao)
partida.rodada = Utils.normalizeString(args.rodada)
partida.estadio = Utils.normalizeString(args.estadio)
-- Campo "local" (palavra reservada no Lua)
partida["local"] = Utils.normalizeString(args["local"])
partida.localidade = partida["local"]
-- Times
partida.mandante = Utils.normalizeString(args.mandante)
partida.visitante = Utils.normalizeString(args.visitante)
-- Gols
partida.gols_mandante = Utils.toNumber(args.gols_mandante)
partida.gols_visitante = Utils.toNumber(args.gols_visitante)
-- Flags históricas
partida.wo = Utils.toBoolean(args.wo)
partida.anulada = Utils.toBoolean(args.anulada)
partida.conta = not Utils.toBoolean(args.nao_conta)
-- Resultado padrão
partida.resultado_mandante = Utils.resultadoPartida(
partida.gols_mandante,
partida.gols_visitante
)
partida.resultado_visitante = Utils.resultadoPartida(
partida.gols_visitante,
partida.gols_mandante
)
-- Classe CSS
partida.css_mandante = Utils.cssResultado(partida.resultado_mandante)
partida.css_visitante = Utils.cssResultado(partida.resultado_visitante)
-- Pontos (padrão 3-1-0)
partida.pontos_mandante = Utils.pontosResultado(partida.resultado_mandante)
partida.pontos_visitante = Utils.pontosResultado(partida.resultado_visitante)
-- Ajustes para W.O
if partida.wo then
-- W.O não gera gols válidos
partida.gols_mandante = 0
partida.gols_visitante = 0
end
-- Ajustes para partidas anuladas ou fora da estatística
if partida.anulada or not partida.conta then
partida.valida = false
partida.pontos_mandante = 0
partida.pontos_visitante = 0
else
partida.valida = true
end
return partida
end
--------------------------------------------------
-- Verifica se Atlético é mandante ou visitante
--------------------------------------------------
function Partidas.ladoDoAtletico(partida)
if Utils.isAtletico(partida.mandante) then
return "mandante"
elseif Utils.isAtletico(partida.visitante) then
return "visitante"
end
return nil
end
--------------------------------------------------
-- Retorna gols do Atlético na partida
--------------------------------------------------
function Partidas.golsDoAtletico(partida)
local lado = Partidas.ladoDoAtletico(partida)
if lado == "mandante" then
return partida.gols_mandante
elseif lado == "visitante" then
return partida.gols_visitante
end
return 0
end
--------------------------------------------------
-- Retorna gols sofridos pelo Atlético
--------------------------------------------------
function Partidas.golsSofridos(partida)
local lado = Partidas.ladoDoAtletico(partida)
if lado == "mandante" then
return partida.gols_visitante
elseif lado == "visitante" then
return partida.gols_mandante
end
return 0
end
--------------------------------------------------
-- Retorna resultado do Atlético (V/E/D)
--------------------------------------------------
function Partidas.resultadoDoAtletico(partida)
local lado = Partidas.ladoDoAtletico(partida)
if lado == "mandante" then
return partida.resultado_mandante
elseif lado == "visitante" then
return partida.resultado_visitante
end
return nil
end
--------------------------------------------------
-- Renderiza uma linha da tabela de partidas
--------------------------------------------------
function Partidas.render(frame)
local args = frame.args
local partida = Partidas.criar(args)
local mandante = partida.mandante
local visitante = partida.visitante
-- Negrito automático no Atlético
if Utils.isAtletico(mandante) then
mandante = "'''" .. mandante .. "'''"
end
if Utils.isAtletico(visitante) then
visitante = "'''" .. visitante .. "'''"
end
local placar = partida.gols_mandante .. " x " .. partida.gols_visitante
return string.format([[
|- class="%s"
| %s
| %s
| %s
| %s
| %s
| %s
| class="%s gd-score" | %s
| %s
| %s
| %s
]],
partida.css_mandante,
args.id or "-",
partida.competicao or "-",
partida.rodada or "-",
partida.data or "-",
args.gols_mandante_autores or "Não identificado",
mandante,
partida.css_mandante,
placar,
visitante,
args.gols_visitante_autores or "Não houve",
partida.estadio ~= "" and partida.estadio or partida.localidade or "-"
)
end
return Partidas