24.416
Bearbeitungen
K (Schützte „Modul:LinkFormDatum“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))) |
(+ linkFormDateAttrList()) |
||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
local | |||
local com = require("Modul:Common") | |||
local str = require("Modul:String") | local str = require("Modul:String") | ||
local kal = require("Modul:Kalender") | |||
local smw = require("Modul:SMW") | |||
function p.LinkFormDate(frame) | function p.LinkFormDate(frame) | ||
| Zeile 10: | Zeile 13: | ||
function p.linkFormDate(date, attr_date, attr_day, attr_year) | function p.linkFormDate(date, attr_date, attr_day, attr_year) | ||
local date_array | |||
local date_array | |||
local mda | local mda | ||
local mn -- monthname | local mn -- monthname | ||
if string.find(date, "/") ~= nil then -- regular case YYYY/MM/DD | |||
date_array = str.split(date, "/") | |||
else -- ISO-P case YYYY-MM-DD | |||
date_array = str.split(date, "-") | |||
end | |||
mw.smw.set({[attr_date] = date}) | -- wenn keine Attribute übergeben, werden keine gesetzt, sondern nur Links eingebaut | ||
if | if attr_day ~= nil then | ||
attr_day = attr_day .. "::" | |||
else | |||
attr_day = "" | |||
end | |||
if attr_year ~= nil then | |||
attr_year = attr_year .. "::" | |||
else | |||
attr_year = "" | |||
end | |||
if attr_date ~= nil then | |||
mw.smw.set({[attr_date] = date}) | |||
end | |||
if com.isEmpty(date_array[2]) then | |||
-- When datestring contained no "/" | -- When datestring contained no "/" | ||
if | if com.isInteger(date_array[1]) then | ||
-- When dateformat is just YYYY | -- When dateformat is just YYYY | ||
return "[[" .. attr_year | return "[[" .. attr_year .. date_array[1] .. "]]" | ||
else | else | ||
-- Dateformat is <monthname> YYYY | -- Dateformat is <monthname> YYYY | ||
mda = str.split(date_array[1]) | mda = str.split(date_array[1]) | ||
return mda[1] .. " [[" .. attr_year .. "::" .. mda[2] .. "]]" | return mda[1] .. " [[" .. attr_year .. mda[2] .. "]]" | ||
end | |||
elseif com.isEmpty(date_array[3]) then | |||
-- Datestring contained one "/" | |||
mn = kal.month_names[tonumber(date_array[2])] | |||
return mn .. " [[" .. attr_year .. date_array[1] .. "]]" | |||
else | |||
-- Dateformat should be YYYY/MM/DD or YYYY-MM-DD | |||
mn = kal.month_names[tonumber(date_array[2])] | |||
date_array[3] = date_array[3]:gsub('0*', '', 1) | |||
return "[[" .. attr_day .. date_array[3] .. ". " .. mn .. "]]" .. | |||
" [[" .. attr_year .. date_array[1] .. "]]" | |||
end | |||
end | |||
function p.linkFormDateAttrList(args) | |||
-- wie linkFormDate, aber zu setzende Attribute werden in Attribute-Liste eingetragen | |||
-- Kommandozeile zum Debuggen: | |||
-- attr_list={}; print(p.linkFormDateAttrList{date="2026/02/10", attr_list=attr_list, attr_date="Datum", attr_day="Tag", attr_year="Jahr"}); mw.logObject(attr_list) | |||
-- attr_list={}; print(p.linkFormDateAttrList{date="2026-02-10", attr_list=attr_list, attr_date="Datum", attr_day="Tag", attr_year="Jahr"}); mw.logObject(attr_list) | |||
-- attr_list={}; print(p.linkFormDateAttrList{date="2026", attr_list=attr_list, attr_date="Datum", attr_day="Tag", attr_year="Jahr"}); mw.logObject(attr_list) | |||
-- attr_list={}; print(p.linkFormDateAttrList{date="April 2026", attr_list=attr_list, attr_date="Datum", attr_day="Tag", attr_year="Jahr"}); mw.logObject(attr_list) | |||
-- attr_list={}; print(p.linkFormDateAttrList{date="2026/02", attr_list=attr_list, attr_date="Datum", attr_day="Tag", attr_year="Jahr"}); mw.logObject(attr_list) | |||
local t = "" | |||
-- date zerteilen | |||
local date_array | |||
if string.find(args.date, "/") ~= nil then -- regular case YYYY/MM/DD | |||
date_array = str.split(args.date, "/") | |||
else -- ISO-P case YYYY-MM-DD | |||
date_array = str.split(args.date, "-") | |||
end | |||
-- Fälle unterscheiden | |||
local day, month, year | |||
if com.isEmpty(date_array[2]) then -- "2026" oder "April 2026" | |||
-- When datestring contained no "/" => only year | |||
if com.isInteger(date_array[1]) then | |||
-- When dateformat is just YYYY | |||
year = date_array[1] | |||
t = "[[" .. year .. "]]" | |||
else | |||
-- Dateformat is <monthname> YYYY | |||
local mda = str.split(date_array[1]) | |||
year = mda[2] | |||
t = mda[1] .. " [[" .. year .. "]]" | |||
end | end | ||
elseif | elseif com.isEmpty(date_array[3]) then -- "2026/02" | ||
-- Datestring contained one "/" | -- Datestring contained one "/" | ||
month = kal.month_names[tonumber(date_array[2])] | |||
year = date_array[1] | |||
t = month .. " [[" .. year .. "]]" | |||
else | else | ||
-- Dateformat should be YYYY/MM/DD | -- Dateformat should be YYYY/MM/DD or YYYY-MM-DD | ||
month = kal.month_names[tonumber(date_array[2])] | |||
date_array[3] = date_array[3]:gsub('0*', '', 1) | date_array[3] = date_array[3]:gsub('0*', '', 1) | ||
day = date_array[3] .. ". " .. month | |||
year = date_array[1] | |||
t = "[[" .. day .. "]]" .. " [[" .. year .. "]]" | |||
end | end | ||
-- Werte in Attributeliste eintragen. Bei nil wird nix eingetragen | |||
smw.addAttrToList(args.attr_list, args.attr_date, args.date) | |||
smw.addAttrToList(args.attr_list, args.attr_date .. "Lfd", t) | |||
smw.addAttrToList(args.attr_list, args.attr_day, day) | |||
smw.addAttrToList(args.attr_list, args.attr_year, year) | |||
return t | |||
end | end | ||
| Zeile 48: | Zeile 120: | ||
local day | local day | ||
if | if com.isEmpty(date_array[2]) then | ||
-- When datestring contained no " ", thus is year | -- When datestring contained no " ", thus is year | ||
return "[[" .. date_array[1] .. "]]" | return "[[" .. date_array[1] .. "]]" | ||
elseif | elseif com.isEmpty(date_array[3]) then | ||
-- When datestring contains monthname and year | -- When datestring contains monthname and year | ||
return date_array[1] .. " [[" .. date_array[2] .. "]]" | return date_array[1] .. " [[" .. date_array[2] .. "]]" | ||
| Zeile 75: | Zeile 147: | ||
local mnr -- monthnr | local mnr -- monthnr | ||
if | if com.isEmpty(date_array[2]) then | ||
-- When datestring contained no " ", thus is year | -- When datestring contained no " ", thus is year | ||
return date_array[1] | return date_array[1] | ||
elseif | elseif com.isEmpty(date_array[3]) then | ||
-- When datestring contains monthname and year | -- When datestring contains monthname and year | ||
return date_array[1].." "..date_array[2] | return date_array[1].." "..date_array[2] | ||
| Zeile 84: | Zeile 156: | ||
day = string.gsub(date_array[1], "%.", "") | day = string.gsub(date_array[1], "%.", "") | ||
day = string.format("%02d", day) | day = string.format("%02d", day) | ||
mnr = | mnr = kal.month_numbers[date_array[2]] | ||
mnr = string.format("%02d", mnr) | mnr = string.format("%02d", mnr) | ||
return date_array[3] .. "/" .. mnr .. "/" .. day | return date_array[3] .. "/" .. mnr .. "/" .. day | ||