Modul:Chronik/Work

Aus FürthWiki

Die Dokumentation für dieses Modul kann unter Modul:Chronik/Work/Doku erstellt werden

local p = {}
local str = require("Modul:String")
local c = require("Modul:Common")
local lfd = require("Modul:LinkFormDatum")
local lsd = require("Modul:LinkSubformDatum")

function p.dateParser(s, year)
	local start_date, end_date = p.splitDateString(s, year)
	start_date, end_date = p.completeDates(start_date, end_date, year)
	local data = {
		['Startdatum'] = lfd.humanToFormDate(start_date),
		['Startjahr'] = lsd.getYear(start_date),
		['Starttag'] = lsd.getMonthdate(start_date)
	}
	if end_date then
		table.insert(data, {
			['Enddatum'] = lfd.humanToFormDate(end_date),
			['Endjahr'] = lsd.getYear(end_date),
			['Endtag'] = lsd.getMonthdate(end_date)
		})
	end
	return start_date, end_date
end

function p.completeDates(start_date, end_date, year)
	--[[Jetzt müssen die gesplitteten Datum vervollständigt werden. Kann ja 
	sein, daß etwas wie 6. - 10. Januar angegeben ist. Und das Jahr, wenn nicht
	gegeben, muß auch aus dem year entnommen werden können.]]
	
	local sd = str.split(start_date, ' ')
	if end_date then
		-- Wenn ein Enddatum gegeben ist
		local ed = str.split(end_date, ' ')
		if c.len(ed) == 2 then
			-- Wenn das Enddatum kein Jahr enthält, füge es aus year hinzu
			ed[3] = year
			end_date = end_date .. " " .. ed[3]
		end
		if c.len(sd) == 2 then
			-- Wenn das Startdatum kein Jahr enthält, hole es von Enddatum
			start_date = start_date .. " " .. ed[3]
		elseif c.len(sd) == 1 then
			-- Startdatum enthält weder Monat noch Jahr, hole sie von Enddatum
			start_date = start_date .. " " .. ed[2] .. " " .. ed[3]
		end
	else
		-- Wenn nur ein Startdatum gegeben ist
		if c.len(sd) == 2 then
			-- Wenn das Startdatum kein Jahr enthält, hole es aus year
			sd[3] = year
			start_date = start_date .. " " .. sd[3]
		end
	end
	return start_date, end_date
end

function p.splitDateString(s)
	-- Teilt ein von/bis Datum in Start- und End-Datum auf.
	local dates = str.split(s, "-")
	-- Wenn splitten mit "-" nur ein Ergebnis bringt, splitte mit "bis"
	if c.len(dates) == 1 then
		dates = str.split(s, "bis")
	end
	-- Alle Leerzeichen links und rechts in den Ergebnissen entfernen
	for i, v in ipairs(dates) do
		dates[i] = str.strip(dates[i])
	end
	return dates[1], dates[2]
end

--[[
	["Beschreibung"]
	["Thema"]
	["Artikel"]
]]

return p