Modul:LinkFormDatum/Work: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
(Die Seite wurde neu angelegt: „local p = {} local com = require("Modul:Common") local str = require("Modul:String") local kal = require("Modul:Kalender") function p.LinkFormDate(frame) -- #invoke wrapper local args = frame.args return p.linkFormDate(args[1], args[2], args[3], args[4]) end function p.linkFormDate(date, attr_date, attr_day, attr_year) local date_array local mda local mn -- monthname if string.find(date, "/") ~= nil then -- regular case YYY…“)
 
Keine Bearbeitungszusammenfassung
 
Zeile 4: Zeile 4:
local str = require("Modul:String")
local str = require("Modul:String")
local kal = require("Modul:Kalender")
local kal = require("Modul:Kalender")
local smw = require("Modul:SMW")


function p.LinkFormDate(frame)
function p.LinkFormDate(frame)
Zeile 57: Zeile 58:
     " [[" .. attr_year .. date_array[1] .. "]]"
     " [[" .. attr_year .. date_array[1] .. "]]"
     end
     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
    elseif com.isEmpty(date_array[3]) then -- "2026/02"
    -- Datestring contained one "/"
    month = kal.month_names[tonumber(date_array[2])]
  year = date_array[1]
    t = month .. " [[" .. year .. "]]"
    else
    -- 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)
    day = date_array[3] .. ". " .. month
    year = date_array[1]
    t = "[[" .. day .. "]]" .. " [[" .. year .. "]]"
    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