Módulo:Conversor de data
Ir para navegação
Ir para pesquisar
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
Este módulo é usado em mais de 500 000 páginas. (Ver Wikihelp:Predefinições em alto risco) Para evitar sobrecargas desnecessárias ao servidor e outros transtornos, quaisquer mudanças devem ser previamente testadas, seja na predefinição de testes ou em Módulo:Conversor de data/Testes (ou ainda em sua página de testes). Por favor, sempre considere expor eventuais mudanças na página de discussão, antes de implementá-las. |
Descrição
O módulo é usado pela predefinição {{Conversor de data}}
, e seu funcionamento está indicado em sua documentação.
Acrescentando estilos
Para acrescentar novos estilos de data para a conversão, deve-se acrescentar à variável patterns uma expressão regular que consiga detectar a data corretamente, obrigatoriamente na ordem dia, mês e ano.
Deve-se notar que expressões regulares em Lua têm uma sintaxe diferente do Regex comum.
local p = {}
local patterns = {"(%d+)-(%d+)-(%d+)", "(%d+)/(%d+)/(%d+)", "(%d+)%.(%d+)%.(%d+)"}
local month_names = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"}
function p.main( frame )
local date = frame.args[1]
local day, month, year = 0, 0, 0
for key, value in pairs(patterns) do
local day, month, year = string.match(date, value)
year = tonumber(year)
day = tonumber(day)
month = tonumber(month)
-- Inverte dia pelo ano, caso o formato da data for xxxx/xx/xx
if (day and day > 100) then
day, year = year, day
end
-- Soma dois mil caso a data inserida for de dois dígitos
if (year and year < 100) then
year = year + 2000
end
-- Inverte dia pelo mes, caso o formato da data mês/dia/ano
if (month and (month > 12 and month < 32)) then
day, month = month, day
end
-- Algumas poucas páginas tinham erro de índice inexistente para o mês
if (month and (month > 12 or month < 1)) then
month = nil
end
if (day and month and year) ~= nil then
return day .. " de " .. month_names[month] .. " de " .. year
end
end
return date
end
return p