Die Dokumentation für dieses Modul kann unter Modul:Vorlage:Personenleiste/Doku erstellt werden
local p = {} local LuaWiki = require( "Module:LuaWiki" ) function p.Execute(frame) local T_Prev = {}; local T_Amt = {}; local T_Zeit = {}; local T_Next = {}; local Tabellenkopf = LuaWiki.transclude("Vorlage:Personenleiste/Kopf" ) local Tabellenzeile = LuaWiki.transclude("Vorlage:Personenleiste/Zeile") local Tabellenende = LuaWiki.transclude("Vorlage:Personenleiste/Ende") local idx = 0; local Zeile=""; local sidx = ""; -- Nimmt benannte Argumentnamen auf local Anzahl = 0 ; -- Anzahl der Zeilen local VG = frame.args['VG'] or ""; local VW = ""; -- wird nicht mehr unterstuetzt local VWW = ""; -- wird nicht mehr unterstuetzt local NG = frame.args['NG'] or ""; local NW = ""; -- wird nicht mehr unterstuetzt local NWW = ""; -- wird nicht mehr unterstuetzt local Titel = frame.args['TI'] or ""; if Titel =="" then Titel = "Amt"; end -- Zeilenparameter einlesen for idx = 1, 12 do sidx='A'..tostring(idx) table.insert(T_Amt, frame.args[sidx] or "") sidx='V'..tostring(idx) table.insert(T_Prev, frame.args[sidx] or "") sidx='Z'..tostring(idx) table.insert(T_Zeit, frame.args[sidx] or "") sidx='N'..tostring(idx) table.insert(T_Next, frame.args[sidx] or "") end for idx = 1, 12 do if mw.ustring.len(T_Amt[idx]) > 0 then Anzahl = idx; if mw.ustring.len(T_Zeit[idx]) > 0 then T_Zeit[idx] = "<br />"..T_Zeit[idx]; else T_Zeit[idx] = ""; end end end -- Abwärtskompatiblität: weibliche Wikiparameter auswerten. -- Zuerst Wikilogik einstellen: Auch Leerstring ist false local B_VG = string.len(VG) > 0; local B_VW = string.len(VW) > 0; local B_VWW = string.len(VWW) > 0; local B_NG = string.len(NG) > 0; local B_NW = string.len(NW) > 0; local B_NWW = string.len(NWW) > 0; -- .WW überschreibt .W und dieses das Maskulinum -- Reihenfolge einhalten! if B_VW then T_Prev[1] = VW; end if B_VWW then T_Prev[1] = VWW; end if B_NW then T_Next[1] = NW; end if B_NWW then T_Next[1] = NWW; end -- Ermitteln der Kopftexte local KopfV = "Vorgänger" local KopfN = "Nachfolger" local DifferntPersonV = false; local DifferntPersonN = false; if B_VW or B_VG then KopfV = "Vorgängerin"; end; if B_VWW then KopfV = "Vorgängerinnen"; end if B_NW or B_NG then KopfN = "Nachfolgerin"; end; if B_NWW then KopfN = "Nachfolgerinnen"; end -- Wenn VG/NG gesetzt, aber verschiedene Personen, dann doch Plural if Anzahl > 1 then for idx = 2, Anzahl do if T_Prev[1] ~= T_Prev[idx] then DifferntPersonV = true; end if T_Next[1] ~= T_Next[idx] then DifferntPersonN = true; end end end if B_VG and DifferntPersonV then KopfV = "Vorgängerinnen"; end if B_NG and DifferntPersonN then KopfN = "Nachfolgerinnen"; end -- Zusammenbau der Leiste, zuerst der Kopf local HTML = Tabellenkopf; local sPrev = ""; local sNext = ""; local sAmt = ""; local sZeit = ""; HTML = mw.ustring.gsub(HTML,'{Kopf_L}',KopfV) HTML = mw.ustring.gsub(HTML,'{Titel}' ,Titel) HTML = mw.ustring.gsub(HTML,'{Kopf_R}',KopfN) -- Jetzt "Anzahl" Zeilen ergänzen for idx = 1, Anzahl do -- Kopien anfertigen, da sonst rekursiv sZeile = Tabellenzeile sPrev = T_Prev[idx]; sNext = T_Next[idx]; sAmt = T_Amt[idx]; sZeit = T_Zeit[idx]; -- Substitution der Platzhalter sZeile = mw.ustring.gsub(sZeile,'{Prev}',sPrev) sZeile = mw.ustring.gsub(sZeile,'{Next}',sNext) sZeile = mw.ustring.gsub(sZeile,'{Amt}' ,sAmt) sZeile = mw.ustring.gsub(sZeile,'{Zeit}',sZeit) -- Fertige Zeile anhängen HTML = HTML .. sZeile; end -- Tabellenende dazu. Einlesen, um ggf. extern ändern zu können. HTML = HTML..Tabellenende; return HTML end return p