Saltu al enhavo

Modulo:LongISODateToText

El Vikinovaĵoj, libera retgazeto

Dokumentado por ĉi tiu modulo povas esti kreata ĉe Modulo:LongISODateToText/dokumentado

--[[
 Ĉi-modulo transformas daton de 10000-01-01 (jjjj-mm-tt) -> al 1-a de januaro 10000
 Используется в шаблонах Ожидаемых событий по датам (ОСДН и ОСДК)
]]

local LongISODateToText={}

local monthNominative = {'Januaro', 'Februaro', 'Marto', 'Aprilo', 'Majo', 'Junio', 'Julio', 'Aŭgusto', "Septembro", "Oktobro", "Novembro", "Decembro"}
local monthGenitive = {'de januaro', 'de februaro', 'de marto', 'de aprilo', 'de majo', 'de junio', 'de julio', 'de aŭgusto', "de septembro", "de oktobro", "de novembro", "de decembro"}

function LongISODateToText.keyYInvoke(arg)
 return LongISODateToText.keyY(arg.args[1])
end

function LongISODateToText.keyY(dateIn)
 local y,m,d = LongISODateToText.parse(dateIn)
 y = y+100000
 return y
end

function LongISODateToText.keyISOInvoke(arg)
 return LongISODateToText.keyISO(arg.args[1])
end

function LongISODateToText.keyISO(dateIn)
 local y,m,d = LongISODateToText.parse(dateIn)
 y = y+100000
 m = m+10
 d = d+10
 return y..m..d
end

function LongISODateToText.parse(dateIn)
 local y,m,d = dateIn:match('^%s*(%-?%d+)[-\\]0*(1?%d)[-\\]0*(%d+)')
 return tonumber(y), tonumber(m), tonumber(d)
end

function LongISODateToText.plusDMY(arg)
 return LongISODateToText.plusDMY(arg.args[1], arg.args[2])
end

function LongISODateToText.plusDMY(dateIn1, dateIn2)
 local y1,m1,d1 = LongISODateToText.parse(dateIn1)
 local y2,m2,d3 = LongISODateToText.parse(dateIn2)
 local d3 = d1 + d2
 local m3 = m1 + m2
 local y3 = 0
 while (m3 > 12) do
  m3 = m3 - 12
  y3 = y3 + 1
 end
 y3 = y1 + y2 + y3
 return d3.." "..monthGenitive[m3].." "..y3
end

function LongISODateToText.parseDMInvoke(arg)
 return LongISODateToText.parseDM(arg.args[1])
end

function LongISODateToText.parseDM(dateIn)
 local y,m,d = LongISODateToText.parse(dateIn)
 return d.." "..monthGenitive[m]
end

function LongISODateToText.parseDMYInvoke(arg)
 return LongISODateToText.parseDMY(arg.args[1])
end

function LongISODateToText.parseDMY(dateIn)
 local y,m,d = LongISODateToText.parse(dateIn)
 return d.." "..monthGenitive[m].." "..y
end

function LongISODateToText.parseMYInvoke(arg)
 return LongISODateToText.parseMY(arg.args[1])
end

function LongISODateToText.parseMY(dateIn)
 local y,m,d = LongISODateToText.parse(dateIn)
 return monthNominative[m].." "..y
end

function LongISODateToText.parseYInvoke(arg)
 return LongISODateToText.parseY(arg.args[1])
end

function LongISODateToText.parseY(dateIn)
 local y,m,d = LongISODateToText.parse(dateIn)
 return y
end

return LongISODateToText