Ir para o conteúdo

Módulo:Datas

De Wiki TokuDrive

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