Módulo:Conversor de data
Ir para navegação
Ir para pesquisar
40x40px | 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. |
40x40px | 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