Módulo:Categorizar PE

Permanently protected module
Origem: Wikipédia, a enciclopédia livre.
Documentação do módulo[ver] [editar] [histórico] [purgar]

Uso

Este módulo possui um método chamado "ano" que recebe o parâmetro da data de encerramento de uma PE e faz a categorização se acordo com o ano informado em Categoria:!Propostas de eliminação por ano de encerramento. Só deve ser utilizada indiretamente via {{Nomeação concluída}}.

local p = {}

function p.ano(frame)
    local var = frame.args[1]
    
    -- Verifica se a página não é do domínio Wikipédia (número 4)
    if mw.title.getCurrentTitle().namespace ~= 4 then
        return ""
    end
    
    -- Caso o parâmetro esteja no formato DD-MM-YY
    if string.match(var, "%d%d%-%d%d%-%d%d") then
        return "[[Category:!Propostas de eliminação encerradas em 20" .. string.sub(var, -2) .. "]]"
    end
    
    -- Caso o parâmetro esteja no formato YYYY
    if string.len(var) == 4 then
    	local year = tonumber(var)
    	if year and year >= 2000 and year <= 2099 then
            return "[[Category:!Propostas de eliminação encerradas em " .. tostring(year) .. "]]"
        else 
        	return "[[Category:!Propostas de eliminação encerradas sem ano reconhecido]]"
        end
    end
    
    -- Caso o parâmetro esteja no formato YYYYMMDD
    if string.len(var) == 8 then
        local firstFourDigits = tonumber(string.sub(var, 1, 4))
        -- Verify if the first four digits are between 2000 and 2099
        if firstFourDigits and firstFourDigits >= 2000 and firstFourDigits <= 2099 then
            return "[[Category:!Propostas de eliminação encerradas em " .. tostring(firstFourDigits) .. "]]"
        end
    end
    
    -- Divide o parâmetro usando " " ou "-" ou "/" ou "‎" como separador
    local str = mw.text.split(var, "[ %-/‎]")
    local reversedStr = {}

    -- Inverte a ordem dos elementos da array
    for i = #str, 1, -1 do
        table.insert(reversedStr, str[i])
    end

    -- Procura por um elemento que tenha 4 dígitos, buscando a partir do último elemento
    for _, substr in ipairs(reversedStr) do
        if tonumber(substr) and string.len(substr) == 4 then
            return "[[Category:!Propostas de eliminação encerradas em " .. substr .. "]]"
        end
    end

	-- Caso tudo tenha dado errado...
    return "[[Category:!Propostas de eliminação encerradas sem ano reconhecido]]"
end

return p