Salta al contegnùo

Modulo:Date

Da Wikipedia, l'ençiclopedia libara.


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
Traesto fora da Wikipèdia - L'ençiclopedia łìbara e cołaboradiva in łéngua Vèneta "https://vec.wikipedia.org/w/index.php?title=Modulo:Date&oldid=1055450"