Modulo:Date
Inpostasion de letura
local z = {}
local mezi = {
'zenaro','febraro','marso','apriłe','majo','zugno','lujo','agosto','setenbre','otobre','novenbre','disenbre'}
function z.nomeDelmeze(meze)
-- Función que devuelve el nome del meze, donde meze es un número entre 1 y 12.
-- Si no es así se devuelve el valor de meze.
-- Por ejemplo, 2 --> febraro
-- 02 --> febraro
-- apriłe --> apriłe
-- MAJO --> MAJO
return mezi[tonumber(meze)] or meze
end
function z.Fecha(frame)
-- Función que formatea una fecha
-- El único parámetro obligatorio es el ano o 3.
-- Obtener los argumentos con los que se llama a la función
local argumentos = {}
local parent = {}
if frame == mw.getCurrentFrame() then
if frame.args[3] or frame.args["ano"] then
argumentos = frame.args
else
parent = frame:getParent()
argumentos = parent.args
end
else
argumentos = frame
end
local enlace = argumentos["enlace"] ~= "no"
-- Obtener el día, el nome del meze y el ano incluyendo para los anos negativos a.d.
local di = argumentos["día"] or argumentos[1] or ''
if di ~='' then
di=tonumber(di) or di -- Eliminar ceros a la izquierda del día.
end
local meze = argumentos["meze"] or argumentos[2] or ''
if meze~='' then
meze =mezi[tonumber(meze)] or meze
end
local ano=tonumber(argumentos["ano"] or argumentos[3]) or 0
if ano < 0 then
ano = -ano .. ' a. C.'
end
local calendario = ''
if argumentos["calendario"] == 'juliano' then
calendario = '<sup>[[Calendario juliano|jul.]]</sup>'
end
-- Formatear la fecha dependiendo de si el día, el meze o el ano están informados
if di ~='' then
if enlace then
return '[[' .. di .. ' de ' .. meze .. ']] del [[' .. ano .. ']]' .. calendario
else
return di .. ' de ' .. meze .. ' del ' .. ano .. calendario
end
elseif meze~='' then
if argumentos["majùscoła"] == 'sí' then
meze = mw.language.new('es'):ucfirst(meze)
end
if enlace then
return '[[' .. meze .. ']] del [[' .. ano .. ']]'
else
return meze .. ' del ' .. ano
end
elseif ano ~= 0 then
if enlace then
return '[[' .. ano .. ']]'
else
return tostring(ano)
end
end
end
function getnumaromeze(nomemeze)
local numaromeze = ''
local nomemezi = {
['01'] = 'zenaro', ['02'] = 'febraro', ['03'] = 'marso', ['04'] = 'apriłe', ['05'] = 'majo', ['06'] = 'zugno', ['07'] = 'lujo', ['7'] = 'lùlio', ['08'] = 'agosto',
['09'] = 'setenbre', ['10'] = 'otobre', ['11'] = 'novenbre', ['12'] = 'disenbre', ['012'] = 'desenbre'
}
for k, n in pairs(nomemezi) do
if nomemezi[k] == mw.ustring.lower(nomemeze) then
numaromeze = k
end
end
if numaromeze == nil or numaromeze == '' then
numaromeze = '00'
end
return numaromeze
end
function setString(cadena)
local di, meze, ano
local error = '<strong class="error">Caena de data no vàlida</strong>'
local valordi = mw.ustring.gsub(cadena,'(%d+) de %a+ del? %d+.*','%1')
if valordi == nil or valordi == '' or mw.ustring.len(valordi) > 2 or type(tonumber(valordi)) ~= 'number' then
return error
else
di = mw.ustring.format('%02d', tonumber(valordi))
end
local valormeze = getnumaromeze(mw.ustring.gsub(cadena,'%d+ de (%a+) del? %d+.*','%1'))
if valormeze == '00' then
return error
else
meze = mw.ustring.format('%02d',tonumber(valormeze))
end
local valorAno = mw.ustring.gsub(cadena,'%d+ de %a+ del? (%d+).*','%1')
if valorAno == nil or valorAno == '' or type(tonumber(valorAno)) ~= 'number' then
return error
else
ano = mw.ustring.format('%04d',tonumber(valorAno))
end
local newCadena = ano..meze..di
return newCadena
end
function z.Numerica(frame)
return setString(frame.args[1])
end
return z