Modul:Dátum sviatku

z Wikipédie, slobodnej encyklopédie


Túto dokumentáciu [vytvoriť] [obnoviť]
Dokumentácia Dokumentácia

Dokumentácia pre tento modul zatiaľ neexistuje. Môžete ju vytvoriť na Modul:Dátum sviatku/Dokumentácia


Ak máte otázku k tomuto modulu, alebo potrebujete jeho rozšírenie a neviete ho správne naformátovať, pýtajte sa v diskusii k modulu. Pokiaľ je potrebné modul urgentne opraviť, obráťte sa na technickú podporu.

local export = {}

-- Výpočet dátumu Veľkej noci
function eas(y)
	c = math.floor(y/100)
	n = y - 19*math.floor(y/19)
	k = math.floor((c - 17)/25)
	i = c - math.floor(c/4) - math.floor((c - k)/3) + 19*n + 15
	i = i - 30*math.floor(i/30)
	j = y + math.floor(y/4) + i + 2 - c + math.floor(c/4)
	j = j - 7*math.floor(j/7)
	l = i - j
	moea = 3 + math.floor((l + 40)/44)
	doea = l + 28 - 31*math.floor(moea/4)
	ea = os.time{year=y, month=moea, day=doea}
	
	return ea
end

-- úprava dátumu do slovenského textového formátu (x. mesiac)
function date_format(day, month)
	local months = {
		["01"] = "január",
		["02"] = "február",
		["03"] = "marec",
		["04"] = "apríl",
		["05"] = "máj",
		["06"] = "jún",
		["07"] = "júl",
		["08"] = "august",
		["09"] = "september",
		["10"] = "október",
		["11"] = "november",
		["12"] = "december",
	}
	
	local str = tonumber(day) .. '. ' .. months[month]
	return str
end

-- pri sviatkoch, ktoré závisia od Veľkej noci, vykoná výpočet dátumu
function easter_relative(year, shift)
	local easter = eas(year)
	local days = tonumber(shift)
	local feast_day = os.date('%d', easter + days*24*60*60)
	local feast_month = os.date('%m', easter + days*24*60*60)
	local feast_date = date_format(feast_day, feast_month)
	
	return feast_date
end

-- sviatok sv. rodiny: nedeľa po Vianociach alebo, ak nie je, tak 30. decembra
function holy_family(year)
	local christmas = os.time{year=year, month=12, day=25}
	local christmas_weekday = os.date('%w', christmas)
	local feast_date = ""
	if os.date('%w', christmas) == '0' then
		feast_date = date_format(30, "12")
	else
		feast_date = date_format(32-christmas_weekday, "12")
	end
	
	return feast_date
end

function export.show(frame)
    local args = frame.args
    local year = args[1]
    local type = args[2]
    local shift = args[3] or (type ~= "easter" and "") or error("Nebol zadaný parameter 3")
    local fianl = ""
    
    if type == "easter" then
    	final = easter_relative(year, shift)
    elseif type == "svata_rodina" then
    	final = holy_family(year)
    end
    
    return final
end

return export