82.367
Bearbeitungen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
||
| Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
local str = require("Modul:String") | |||
local c = require("Modul:Common") | local c = require("Modul:Common") | ||
local lfd = require("Modul:LinkFormDatum") | local lfd = require("Modul:LinkFormDatum") | ||
local lsd = require("Modul:LinkSubformDatum") | local lsd = require("Modul:LinkSubformDatum") | ||
function p.Eintrag(frame) | function p.Eintrag(frame) | ||
local title = mw.title.getCurrentTitle().text | |||
local title = mw.title.getCurrentTitle() | local daterange = frame.args[1] | ||
local text = frame.args[2] or "" | |||
local | local option = frame.args[3] | ||
local | local thema = frame.args["Thema"] or "Ereignis" | ||
local year = nil | |||
if c.istJahreszahl(title) then | |||
year = title | |||
end | |||
local data = p.dateParser(daterange, year) | |||
local ds = '[[' .. data['Starttag'] .. ']]' | |||
if c.istJahreszahl( | if not year then | ||
year = | ds = ds .. ' [[' .. data['Startjahr'] .. ']]' | ||
end | |||
if data['Enddatum'] then | |||
ds = ds .. " - [[" .. data['Endtag'] .. "]]" | |||
if not year then | |||
ds = ds .. " [[" .. data['Endjahr'] .. "]]" | |||
end | |||
end | |||
data['Beschreibung'] = text | |||
data['Thema'] = thema | |||
mw.smw.subobject(data) | |||
if option == "nodate" then | |||
return text | |||
end | |||
return ds .. ': ' .. text | |||
end | end | ||
function p. | 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 sdf = lfd.humanToFormDate(start_date) | |||
local | |||
local | |||
local data = { | local data = { | ||
['Startdatum'] = sdf, | |||
['Startjahr'] = lsd.getYear(sdf), | |||
[ | ['Starttag'] = lsd.getMonthday(sdf) | ||
[ | |||
[ | |||
} | } | ||
if end_date then | |||
local edf = lfd.humanToFormDate(end_date) | |||
if | data['Enddatum'] = edf | ||
data['Endjahr'] = lsd.getYear(edf) | |||
data['Endtag'] = lsd.getMonthday(edf) | |||
data[ | |||
data[ | |||
data[ | |||
end | end | ||
mw.logObject(data) | |||
return data | return data | ||
end | end | ||
function p. | function p.completeDates(start_date, end_date, year) | ||
-- Wenn | --[[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 | end | ||
function p. | function p.splitDateString(s) | ||
-- | -- Teilt ein von/bis Datum in Start- und End-Datum auf. | ||
return | 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 | end | ||
return p | return p | ||