Módulo:Temporada/Partidas: mudanças entre as edições

De Clube Atletico Mineiro - Enciclopedia Galo Digital
Ir para navegação Ir para pesquisar
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

Predefinição:Documentation

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

Predefinição:Aviso

---

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
    • id
    • ano
    • data
    • competicao
    • rodada
  • Local
    • estadio
    • localidade
  • Times
    • mandante
    • visitante
  • Placar
    • gols_mandante
    • gols_visitante
  • Autores dos gols
    • autores_mandante
    • autores_visitante
  • Flags de controle
    • wo
    • anulada
    • conta
  • Resultados calculados
    • resultado_mandante
    • resultado_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

Predefinição:Nota

---

resultadoDoAtletico(p)

Retorna o resultado do Atlético na partida.

  • Identifica se o clube foi mandante ou visitante
  • Retorna V, E ou D

---

renderLista(frame)

Renderiza a lista completa de partidas de uma temporada.

  • Parâmetro
    • frame.args.ano
  • Fluxo
  1. Carrega dados do ano
  2. Cria objetos Partida
  3. Renderiza cada linha
  4. 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

Predefinição:Aviso

---

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

---

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