Módulo:EAD

Fonte: Enciclopédia de conhecimento da Igreja de Deus
Saltar para a navegação Saltar para a pesquisa

A documentação para este módulo pode ser criada na página Módulo:EAD/doc

local m = {}
function m.linha (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 dados, indicacao, tituloart = m.dados(page)
		tituloart = tituloart or titulo
		
		local icone = ''
		if indicacao == 'destacado' or indicacao == 'bom' then
				icone = '[[Ficheiro:Cscr-featured' .. (indicacao == 'bom' and '2' or '1') .. '-candidate.png|16px|ligação=]] '
		end
		
		-- Colocando os dados na tabela
		local template = [=[|-
|%s[[Wikipédia:Escolha do artigo em destaque/%s|%s]] 
|style="text-align:center; font-size:smaller;"|[[%s|Art]] / [[Discussão:%s|disc]]%s]=]
		return string.format(template, icone, titulo, tituloart, tituloart, tituloart, dados)
end
function m.erro(texto)
		return string.format('\n|colspan=6 style="color:#800; font-size:small"|(erro: [[Módulo:EAD|módulo]] %s)', texto)
end
function m.dados (page)
		local placar = {0,0,0}
		
		-- Buscas no texto
		-- Indicação para destacado ou bom
		local pos, _ , indicacao = string.find(page, "\n%* Indicação para: *(%a+)")
		if indicacao then
				indicacao = string.lower(indicacao)
				if indicacao == 'artigo' then
						pos, _ , indicacao = string.find(page, "\n%* Indicação para: *%a+ +(%a+)")
						if indicacao then
								indicacao = string.lower(indicacao)
						end
				end
		end
		if not indicacao or indicacao ~= 'destacado' and indicacao ~= 'bom' then
				return m.erro'não encontrou se a indicação é para destacado ou bom'
		end
		
		-- Título do artigo --
		local pos, _ , tituloart = string.find(page, "\n%== *%[%[([^]\n]+)%]%] *==\n")
		
		-- Prazo mínimo
		local prazo, prazosort
		local posprazo, _, hora, min, dia, mes, ano = string.find(page, " até às [a-z<>]*(%d%d)h(%d%d)min '''UTC''' de (%d%d?) de (%S+) de (%d%d%d%d)")
		if not posprazo then
				prazo = '<small>(não encontrado)</small>'
				prazosort = ''
		else
				prazo = string.format('%sh%smin de %s de %s de %s', hora, min, dia, mes, ano)
				local 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"}
				prazosort = string.format(' data-sort-value="%s%s%02d%s%s"', ano, meses[mes], dia, hora, min)
		end
		-- Proponente
		local pos, _, proponente = string.find(page, "%[%[Us[ue][^]:\n]+:([^|/]+)|")
		if not pos then
				pos = 1
		end
		if not proponente or (posprazo and pos > posprazo) then
				proponente = '?'
		else
				proponente = string.format('%s ([[Usuário(a) Discussão:%s|discussão]])', proponente, proponente)
		end
		-- Estado da proposta
		local estado
		a, b, conclusao = string.find(page, "^{{[Rr]esultado EAD|[dat1]+=[^|}]-|tipo=(%d)}}")
		if conclusao then
				estado = "consenso [[Ficheiro:Cscr-featured" .. conclusao .. ".png|15x15px]]"
		elseif string.find(page, "^{{[Rr]esultado EAD|[dat1]+=[^|}]-}}") then
				estado = "recusado [[Ficheiro:Symbol declined.svg|15x15px]]"
		else
				-- Contagem dos votos
				-- placar[3] são os votos para destacado, placar[2] votos para bom e placar[1] para artigo normal
				local buscapredef = "{{([AaCcNn][^}\n]+)}}"
				local _, pos, predef = string.find(page, buscapredef, pos)
				while predef do
						local apoio = string.find(predef, '^[Aa]poio')
						if apoio then
								local apoiobom = string.find(predef, '^[Aa]poio|[Aa]poio para [Bb]om')
								if apoiobom then
										placar[2] = placar[2] + 1
								else
										placar[3] = placar[3] + 1
								end
						elseif string.find(predef, '^[Nn]ão apoio') or mw.ustring.find(predef, '^[Cc]ontra') then
								placar[1] = placar[1] + 1
						end
						_, pos, predef = string.find(page, buscapredef, pos)
				end
		
				if indicacao == 'bom' then
						estado = string.format('%d [[Ficheiro:Symbol support vote.svg|ligação=|15x15px]] / %d [[Ficheiro:Symbol declined.svg|15x15px]]',
								placar[3] + placar[2], placar[1])
				elseif placar[2] > 0 then
						estado = string.format('%d [[Ficheiro:Symbol support vote.svg|ligação=|15x15px]] / %d [[Ficheiro:Cscr-featured2.png|15x15px]] / %d [[Ficheiro:Symbol declined.svg|15x15px]]',
								placar[3], placar[2], placar[1])
				else
						estado = string.format('%d [[Ficheiro:Symbol support vote.svg|ligação=|15x15px]] / %d [[Ficheiro:Symbol declined.svg|15x15px]]',
								placar[3], placar[1])
				end
		end
		-- Colocando os dados na tabela
		return string.format("\n|%s\n|style=\"white-space: nowrap\"|%s\n|style=\"white-space: nowrap\"%s|%s",
				estado, proponente, prazosort, prazo), indicacao, tituloart
end
return m