Módulo:ECD-antigo
Saltar para a navegação
Saltar para a pesquisa
A documentação para este módulo pode ser criada na página Módulo:ECD-antigo/doc
local m = {}
function m.EAD (frame)
-- Esta é a função antiga que não é mais usada, ela é mantida apenas para permitir a visualização
-- correta de versões antigas da EAD/Lista, a versão atualmente usada é a m.link
local page = frame.args[1]
return m.placar(page)
end
function m.link (frame)
-- Função que gera a linha da tabela em [[Wikipédia:Escolha do artigo em destaque/Lista]]
local titulo = frame.args[1]
local title = mw.title.new('Wikipédia:Escolha do artigo em destaque/' .. titulo)
local page = title:getContent()
local placar = m.placar(page)
-- Colocando os dados na tabela
local template = [=[|-
|[[Wikipédia:Escolha do artigo em destaque/%s|%s]]
|style="text-align:center; font-size:smaller;"|[[%s|Art]] / [[Discussão:%s|disc]]%s]=]
return mw.ustring.format(template, titulo, titulo, titulo, titulo, placar)
end
function m.placar (page)
frame = mw.getCurrentFrame()
meses = {["janeiro"] = "01", ["fevereiro"] = "02", ["março"] = "03", ["abril"] = "04", ["maio"] = "05", ["junho"] = "06",
["julho"] = "07", ["agosto"] = "08", ["setembro"] = "09", ["outubro"] = "10", ["novembro"] = "11", ["dezembro"] = "12"}
local placar = {0,0,0}
-- Busca o fim do prazo de votação no texto
local a, b, prazo, hora, min, dia, mes, ano = mw.ustring.find(page, "<section begin=\"fim do prazo\"/>((%d%d)h(%d%d)min '''UTC''' de (%d%d?) de (%S+) de (%d%d%d%d))")
-- Busca o fim do prazo do speed close
-- esta linha deve ser mantida para permitir a visualisação de versões antigas da lista)
local a, b, diab, mesb, anob = mw.ustring.find(page, "voto contra no dia (%d%d?) de (%S+) de (%d%d%d%d)")
dia, diab = #(dia or '') == 1 and "0" .. dia or dia, #(diab or '') == 1 and "0" .. diab or diab
-- Busca outros pontos da página usados para delimitar a busca por votos
local destaque = mw.ustring.find(page, "{{Voto artigo destacado}}")
local bom = mw.ustring.find(page, "{{Voto artigo bom}}")
local nenhum = mw.ustring.find(page, "{{Voto artigo normal}}")
local coment = mw.ustring.find(page, "== Comentários e sugestões ==")
local i = mw.ustring.find(page, "\n#[^:\n]")
-- Contagem dos votos
-- placar[3] são os votos para destacado, placar[2] votos para bom e placar[1] para artigo normal
while i do
if i > coment then
elseif i > (nenhum or 0) then placar[1] = placar[1] + 1
elseif i > bom then placar[2] = placar[2] + 1
elseif destaque and i > destaque then placar [3] = placar[3] + 1
end
-- Busca linha de voto
i = mw.ustring.find(page,"\n#[^:\n]", i + 10)
end
-- Verificação do prazo
local agora = tonumber(os.date("%Y%m%d%H%M"))
local timestamp = tonumber((ano or '0000') .. (meses[mes] or '00') .. (dia or '00') .. (hora or '00') .. (min or '00'))
local timestampb = diab and tonumber(anob .. meses[mesb] .. diab .. hora .. min)
-- tempo == 2 quer dizer que terminou o prazo, e tempo == 1 que terminou o prazo do speed close
local tempo = timestamp < agora and 2 or diab and timestampb < agora and 1 or 0
-- Decide o formato em que o prazo é exibido na tabela
if not destaque and diab and placar[1] == 0 and tempo == 0 then
-- exibir data para speed close em eleição para artigo bom
-- caso um prazo de speed close tenha sido encontrado na página de votação
prazo = mw.ustring.format(
"style=\"text-align:center;white-space:nowrap;\" title=\"speedy close: %s de %s de %s\"|%s" ..
frame:callParserFunction('#tag:ref', {'', name = 'speed-close'}) , diab, mesb, anob, prazo)
elseif tempo == 2 then
-- fundo vermelho quando o prazo termina
prazo = "style=\"text-align:center;white-space:nowrap; background-color:#FCC\"|" .. (prazo or 0)
else
prazo = "style=\"text-align:center;white-space:nowrap;\"|" .. prazo
end
-- Porcentagem de votos para artigo destacado
local percentD
if destaque and placar[3] + placar[2] > 0 then
local p = math.floor(placar[3] / (placar[1] + placar[2] + placar[3]) * 100)
local negrito = (placar[3] >= 7 and placar[3] >= 3 * (placar[2] + placar[1]))
percentD = negrito and "'''" .. p .. "%'''" or p > 0 and p .. "%" or "0"
else
percentD = "—"
end
-- Porcentagem de votos para artigo bom
local percentB
if placar[3] + placar[2] > 0 then
local p = math.floor((placar[2] + placar[3]) / (placar[1] + placar[2] + placar[3]) * 100)
local negrito = (tempo == 1 and placar[2] + placar[3] >= 7
and placar[2] + placar[3] >= 3 * placar[1]
and percentD ~= "'''100%'''"
or not destaque and tempo == 0
and placar[2] >= 5 and placar [1] == 0)
percentB = negrito and "'''" .. p .. "%'''" or p .. "%"
else
percentB = "0"
end
-- Placar
local placarD = destaque and (placar[3] >= 7 and placar[3] >= 3 * (placar[2] + placar[1]) and
"style=\"text-align:center;background-color:#FFF8CC\"|'''" .. placar[3] .. "'''" or -- Artigo destacado
"style=\"text-align:center;\"|" .. placar[3]) or
"style=\"text-align:center;\"|—" -- A eleição é para artigo bom
local placarB = (not destaque and placar[2] >= 5 and placar[3] + placar[1] == 0 and tempo == 0 or
placar[2] >= 7 and placar[2] >= 3 * (placar[3] + placar[1])) and
"style=\"text-align:center;background-color:#CCCCCC\"|'''" .. placar[2] .. "'''" or -- Artigo bom
"style=\"text-align:center;\"|" .. placar[2]
local placarN = tempo == 2 and #placarD < 40 and #placarB < 40 and
"style=\"text-align:center;background-color:#FCC\"|'''" .. placar[1] .. "'''" or -- Artigo normal
"style=\"text-align:center;\"|" .. placar[1]
-- Colocando os dados na tabela
return mw.ustring.format("\n|%s\n|%s\n|%s\n|%s\n|style=\"text-align:center;\"|%s||style=\"text-align:center;\"|%s",
placarD, placarB, placarN, prazo, percentD, percentB)
end
return m