Módulo:ECD: diferenças entre revisões
Conteúdo apagado Conteúdo adicionado
m correção |
para sumir os erros de Lua apontado em wp:Café dos programadores#Tabelas em EAD |
||
Linha 77: | Linha 77: | ||
local a, b, prazo, hora, min, dia, mes, ano = mw.ustring.find(page, "%S((%d%d)h(%d%d)min '''UTC''' de (%d%d?) de (%S+) de (%d%d%d%d))") |
local a, b, prazo, hora, min, dia, mes, ano = mw.ustring.find(page, "%S((%d%d)h(%d%d)min '''UTC''' de (%d%d?) de (%S+) de (%d%d%d%d))") |
||
local a, b, diab, mesb, anob = mw.ustring.find(page, "voto contra no dia (%d%d?) de (%S+) de (%d%d%d%d)") |
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 == 1 and "0" .. dia or dia, #diab == 1 and "0" .. diab or diab |
dia, diab = #(dia or '') == 1 and "0" .. dia or dia, #(diab or '') == 1 and "0" .. diab or diab |
||
local destaque = mw.ustring.find(page, "{{Voto artigo destacado}}") |
local destaque = mw.ustring.find(page, "{{Voto artigo destacado}}") |
||
local bom = mw.ustring.find(page, "{{Voto artigo bom}}") |
local bom = mw.ustring.find(page, "{{Voto artigo bom}}") |
||
Linha 87: | Linha 87: | ||
while i do |
while i do |
||
if i > coment then |
if i > coment then |
||
elseif i > nenhum then placar[1] = placar[1] + 1 |
elseif i > (nenhum or 0) then placar[1] = placar[1] + 1 |
||
elseif i > bom then placar[2] = placar[2] + 1 |
elseif i > bom then placar[2] = placar[2] + 1 |
||
elseif destaque and i > destaque then placar [3] = placar[3] + 1 |
elseif destaque and i > destaque then placar [3] = placar[3] + 1 |
||
Linha 96: | Linha 96: | ||
-- Verificação do prazo (se já se passaram 15 ou 30 dias) |
-- Verificação do prazo (se já se passaram 15 ou 30 dias) |
||
local agora = tonumber(os.date("%Y%m%d%H%M")) |
local agora = tonumber(os.date("%Y%m%d%H%M")) |
||
local tempo = tonumber(ano .. meses[mes] .. dia .. hora .. min) < agora and 2 or |
local tempo = tonumber((ano or '0000') .. (meses[mes] or '00') .. (dia or '00') .. (hora or '00') .. (min or '00')) < agora and 2 or |
||
tonumber(anob .. meses[mesb] .. diab .. hora .. min) < agora and 1 or 0 |
tonumber(anob .. meses[mesb] .. diab .. hora .. min) < agora and 1 or 0 |
||
prazo = not destaque and placar[1] == 0 and tempo == 0 and mw.ustring.format( |
prazo = not destaque and placar[1] == 0 and tempo == 0 and mw.ustring.format( |
||
"style=\"text-align:center;white-space:nowrap;\" title=\"speedy close: %s de %s de %s\"|%s" .. |
"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) or |
frame:callParserFunction('#tag:ref', {'', name = 'speed-close'}) , diab, mesb, anob, prazo) or |
||
tempo == 2 and "style=\"text-align:center;white-space:nowrap; background-color:#FCC\"|" .. prazo or |
tempo == 2 and "style=\"text-align:center;white-space:nowrap; background-color:#FCC\"|" .. (prazo or 0) or |
||
"style=\"text-align:center;white-space:nowrap;\"|" .. prazo |
"style=\"text-align:center;white-space:nowrap;\"|" .. prazo |
||
Revisão das 21h09min de 16 de abril de 2020
Este módulo pode ter sua documentação deficiente. Por favor, documente-o ou melhore suas explicações caso o saiba usar ou tenha conhecimentos para tal. |
Módulo usado como {{#invoke:ECD|ARTIGO}}
para gerar a lista de artigos a destacar.
A documentação acima é transcluída de Módulo:ECD/doc. (editar | histórico) Editores podem experimentar nas páginas de teste (criar | espelhar) e de exemplos para testes (editar) deste módulo. Subpáginas deste módulo. |
local m = {}
function m.EAD (frame)
local page = frame.args[1]
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}
-- Buscas no texto
local a, b, prazo, hora, min, dia, mes, ano = mw.ustring.find(page, "%S((%d%d)h(%d%d)min '''UTC''' de (%d%d?) de (%S+) de (%d%d%d%d))")
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 == 1 and "0" .. dia or dia, #diab == 1 and "0" .. diab or diab
local destaque = mw.ustring.find(page, "\">Artigo destacado<")
local bom = mw.ustring.find(page, "\">Artigo bom<")
local nenhum = mw.ustring.find(page, "\">Artigo de qualidade 4 ou inferior")
local coment = mw.ustring.find(page, "Comentários e sugestões")
local i = mw.ustring.find(page, "\n#[^:\n]")
-- Contagem dos votos
while i do
if i > coment then
elseif i > nenhum 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
i = mw.ustring.find(page,"\n#[^:\n]", i + 10)
end
-- Verificação do prazo (se já se passaram 15 ou 30 dias)
local agora = tonumber(os.date("%Y%m%d%H%M"))
local tempo = tonumber(ano .. meses[mes] .. dia .. hora .. min) < agora and 2 or
tonumber(anob .. meses[mesb] .. diab .. hora .. min) < agora and 1 or 0
prazo = not destaque and placar[1] == 0 and tempo == 0 and 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) or
tempo == 2 and "style=\"text-align:center;white-space:nowrap; background-color:#FCC\"|" .. prazo or
"style=\"text-align:center;white-space:nowrap;\"|" .. prazo
-- Percentagem de votos para artígo destacado
local percentD = destaque and (placar[3] + placar[2] > 0 and
math.floor(placar[3] / (placar[1] + placar[2] + placar[3]) * 100) .. "%" or 0)
percentD = percentD and (placar[3] >= 7 and placar[3] >= 3 * (placar[2] + placar[1]) and
"'''" .. percentD .. "'''" or percentD == "0%" and "0" or percentD) or "—"
-- Percentagem de votos para artigo bom
local percentB = placar[3] + placar[2] > 0 and
math.floor((placar[2] + placar[3]) / (placar[1] + placar[2] + placar[3]) * 100) .. "%" or 0
percentB = (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) and "'''" .. percentB .. "'''" or
percentB == "0%" and "0" or percentB
local placarD = destaque and (placar[3] >= 7 and placar[3] >= 3 * (placar[2] + placar[1]) and
"\n|style=\"text-align:center;background-color:#FFF8CC\"|'''" .. placar[3] .. "'''" or -- Artigo destacado
"\n|style=\"text-align:center;\"|" .. placar[3]) or
"\n|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
"\n|style=\"text-align:center;background-color:#CCCCCC\"|'''" .. placar[2] .. "'''" or -- Artigo bom
"\n|style=\"text-align:center;\"|" .. placar[2]
local placarN = tempo == 2 and #placarD < 40 and #placarB < 40 and
"\n|style=\"text-align:center;background-color:#FCC\"|'''" .. placar[1] .. "'''" or -- Artigo normal
"\n|style=\"text-align:center;\"|" .. placar[1]
-- Colocando os dados na tabela
return mw.ustring.format("%s%s%s\n|%s\n|style=\"text-align:center;\"|%s||style=\"text-align:center;\"|%s",
placarD, placarB, placarN, prazo, percentD, percentB)
end
function m.link (frame)
local titulo = frame.args[1]
local title = mw.title.new('Wikipédia:Escolha do artigo em destaque/' .. titulo)
local page = title:getContent()
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}
-- Buscas no texto
local a, b, prazo, hora, min, dia, mes, ano = mw.ustring.find(page, "%S((%d%d)h(%d%d)min '''UTC''' de (%d%d?) de (%S+) de (%d%d%d%d))")
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
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
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
i = mw.ustring.find(page,"\n#[^:\n]", i + 10)
end
-- Verificação do prazo (se já se passaram 15 ou 30 dias)
local agora = tonumber(os.date("%Y%m%d%H%M"))
local tempo = tonumber((ano or '0000') .. (meses[mes] or '00') .. (dia or '00') .. (hora or '00') .. (min or '00')) < agora and 2 or
tonumber(anob .. meses[mesb] .. diab .. hora .. min) < agora and 1 or 0
prazo = not destaque and placar[1] == 0 and tempo == 0 and 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) or
tempo == 2 and "style=\"text-align:center;white-space:nowrap; background-color:#FCC\"|" .. (prazo or 0) or
"style=\"text-align:center;white-space:nowrap;\"|" .. prazo
-- Percentagem de votos para artígo destacado
local percentD = destaque and (placar[3] + placar[2] > 0 and
math.floor(placar[3] / (placar[1] + placar[2] + placar[3]) * 100) .. "%" or 0)
percentD = percentD and (placar[3] >= 7 and placar[3] >= 3 * (placar[2] + placar[1]) and
"'''" .. percentD .. "'''" or percentD == "0%" and "0" or percentD) or "—"
-- Percentagem de votos para artigo bom
local percentB = placar[3] + placar[2] > 0 and
math.floor((placar[2] + placar[3]) / (placar[1] + placar[2] + placar[3]) * 100) .. "%" or 0
percentB = (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) and "'''" .. percentB .. "'''" or
percentB == "0%" and "0" or percentB
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
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
|%s
|%s
|%s
|style="text-align:center"|%s||style="text-align:center"|%s]=]
return mw.ustring.format(template, titulo, titulo, titulo, titulo,
placarD, placarB, placarN, prazo, percentD, percentB)
end
return m