Modul:Kalender

Aus FürthWiki

Version vom 28. Dezember 2025, 18:59 Uhr von HeikoBot (Diskussion | Beiträge) (+ month_names, month_numbers)

Dieses Modul enthält Kalender/Datums-bezogene Funktionen.

istJahrestag()

Überprüft den Namen des beinhaltenden Artikels auf:

  • mit 1 oder 2 Ziffern beginnt (%d%d?)
  • gefolgt ist von einem Punkt (%.)
  • optionalem Leerzeichen (%s*),
  • und einem Monatsnamen (%a+ = Buchstaben).

Wenn das zutreffend ist, wird das erste Argument zurückgegeben. Wenn nicht, wird das zweite Argument zurückgegeben. Sind keine Argumente gegeben, wird true oder "" zurückgegeben.

istJahreszahl()

Überprüft den Namen des beinhaltenden Artikels auf:

  • Ist der Artikelname eine Ganzzahl, positiv oder negativ? (^%-?%d+$)
  • Oder ist der Artikelname eine positive Ganzzahl, gefolgt von "v. Chr." oder "n. Chr." (^%d+%s+[vn]%.%s+Chr%.$)

Wenn das zutreffend ist, wird das erste Argument zurückgegeben. Wenn nicht, wird das zweite Argument zurückgegeben. Sind keine Argumente gegeben, wird "" oder true zurückgegeben.

dateLastDayCompleter()

Ergänzt ein Formular-Datum um letzten Tag für eine SMW-Query, insbesondere Abfragen.

Unterseiten


p = {}

p.month_names = { "Januar", "Februar", "März", "April", "Mai",  "Juni",
	"Juli", "August", "September", "Oktober", "November", "Dezember"}

p.month_numbers = {
	["Januar"] = 1,		["Februar"] = 2,	["März"] = 3,
	["April"] = 4,		["Mai"] = 5,		["Juni"] = 6,
	["Juli"] = 7,		["August"] = 8,		["September"] = 9,
	["Oktober"] = 10,	["November"] = 11,	["Dezember"] = 12}

function p.IstJahrestag(frame)
	-- #invoke wrapper
	local args = frame.args
    local title = mw.title.getCurrentTitle().text
    local tag, monat = p.istJahrestag(title)
    
    if tag and monat then
        return frame.args[1] or "true"
    else
        return frame.args[2] or ""
    end
end

function p.istJahrestag(s)
	s = s or ""
	-- Prüfe auf ein-/zweistellige Zahl durch Punkt gefolgt, opt. Leerzeichen
	return s:match("^(%d%d?)%.%s*(%a+)$")
end

function p.IstJahreszahl(frame)
	-- #invoke wrapper
    local args = frame.args
    local title = mw.title.getCurrentTitle().text

    if p.istJahreszahl(title) then
        return args[1] or "true"
    else
        return args[2] or ""
    end
end

function p.istJahreszahl(s)
	s = s or ""
	-- Prüfe auf Formate wie: 2024, -44, 44 v. Chr., 800 n. Chr.
	return s:match("^%-?%d+$") or s:match("^%d+%s+[vn]%.%s+Chr%.$")
end

function p.getMonthList()
	-- Returns a numbered List of all monthnames
	return {
		[1] = "Januar",
		[2] = "Februar",
		[3] = "März",
		[4] = "April",
		[5] = "Mai",
		[6] = "Juni",
		[7] = "Juli",
		[8] = "August",
		[9] = "September",
		[10] = "Oktober",
		[11] = "November",
		[12] = "Dezember"}
end

function p.getMonthnr(name) 
	-- Returns the number of the given monthname 
	local months = p.getMonthList()
	for nr, mn in pairs(months) do
		if mn == name then
			return nr
		end
	end
end

function p.date2ISO(d)
end

return p