Módulo:Datas
A documentação para este módulo pode ser criada na página Módulo:Datas/doc
local modulo = {}
function modulo.ISO_8601 (frame)
local meses = {janeiro = 1, fevereiro = 2, ["março"] = 3, abril = 4, maio = 5, junho = 6, julho = 7, agosto = 8, setembro = 9, outubro = 10, novembro = 11, dezembro = 12}
local function mes_em_numero (mes) -- função auxiliar que converte para minúscula antes de usar a tabela meses
if mes == nil then
return nil
else
mes = mw.ustring.lower (mes)
return meses[mes]
end
end
local dia, mes, ano, entrada
entrada = frame.args[1]
entrada = mw.text.trim (entrada) -- tira espaços do começo e do fim
mes, ano = mw.ustring.match (entrada, "^(%a+) de (%d+)$") -- formato com mês e ano (primeiro pois é o mais comum)
mes = mes_em_numero (mes)
if mes ~= nil then
return string.format ("%.4d-%.2d", ano, mes)
else
dia, mes, ano = mw.ustring.match (entrada, "^(%d%d?) de (%a+) de (%d+)$") -- formato com dia, mês e ano
mes = mes_em_numero (mes)
if dia ~= nil and mes ~= nil then
return string.format ("%.4d-%.2d-%.2d", ano, mes, dia)
else
ano = mw.ustring.match (entrada, "^(%d+)$") -- formato com apenas ano
if ano ~= nil then
return string.format ("%.4d", ano)
else
error ("formato de data inesperado")
end
end
end
end
return modulo