Module:User:Antonsusi:Test
Documentation for this module may be created at Module:User:Antonsusi:Test/doc
local p = {}
local transclude = function ( s, args )
-- Save transclusion of a page, or error message
-- Precondition:
-- s -- string; page name
-- args -- table or nil; arguments
-- Uses:
-- mw.getCurrentFrame()
-- error()
local r = { s, "1" }
local frame = mw.getCurrentFrame()
if frame:callParserFunction( "#ifexist", r ) == "1" then
if args then
r = frame:expandTemplate{ title = s, args = args }
else
r = frame:expandTemplate{ title = s }
end
else
r = error( "No transclude page '" .. s .. "'" )
end
return r
end -- transclude()
function p.Execute(frame)
local T_Prev = {};
local T_Amt = {};
local T_Zeit = {};
local T_Next = {};
local Tabellenkopf = transclude("User:Antonsusi/Folge/Kopf" )
local Tabellenzeile = transclude("User:Antonsusi/Folge/Zeile")
local Tabellenende = transclude("User:Antonsusi/Folge/Ende")
local idx = 0;
local Zeile="";
local sidx = ""; -- Nimmt benannte Argumentnamen auf
local Anzahl = 0 ; -- Anzahl der Zeilen
local Border_OL, Border_OR, Border_UL, Border_UR = "0em"
local BN ="0em"
local BW ="0.1em"
Titel = frame.args['TI'] or "";
if Titel =="" then Titel = "Amt"; end
for idx = 1, 9 do
sidx='A'..tonumber(idx)
table.insert(T_Amt, frame.args[sidx] or "")
sidx='V'..tonumber(idx)
table.insert(T_Prev, frame.args[sidx] or "")
sidx='Z'..tonumber(idx)
table.insert(T_Zeit, frame.args[sidx] or "")
sidx='N'..tonumber(idx)
table.insert(T_Next, frame.args[sidx] or "")
end
for idx = 1, 9 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
-- Ermitteln der Kopftexte links und rechts
local Kopf_L = ""
local Kopf_R = ""
local DifferntPersonL = false;
local DifferntPersonR = false;
local VG = (frame.args['VG'] or "") ~= "";
local VW = (frame.args['VW'] or "") ~= "";
local VWW = (frame.args['VWW'] or "") ~= "";
local RG = (frame.args['RG'] or "") ~= "";
local RW = (frame.args['RW'] or "") ~= "";
local RWW = (frame.args['RWW'] or "") ~= "";
if VWW then
Kopf_L = "Vorgängerinnen";
elseif VW or VG then
Kopf_L = "Vorgängerin";
else
Kopf_L = "Vorgänger"
end
if RWW then
Kopf_R = "Nachfolgerinnen";
elseif RW or RG then
Kopf_R = "Nachfolgerin";
else
Kopf_R = "Nachfolger"
end
-- Wenn VG/RG gesetzt, aber verschiedene Personen, dann doch Plural
if Anzahl > 1 then
for idx = 2, Anzahl do
if T_Prev[1] ~= T_Prev[idx] then DifferntPersonL = true; end
if T_Next[1] ~= T_Next[idx] then DifferntPersonR = true; end
end
end
text = "Anzahl=".. Anzahl .. ", DifferntPersonL=" .. tostring(DifferntPersonL) .. ", Kopf_L (zuerst)=" .. Kopf_L
if VG and DifferntPersonL then Kopf_L = "Vorgängerinnen"; end
if RG and DifferntPersonR then Kopf_R = "Nachfolgerinnen"; end
text = text .. ", Kopf_L (danach)=" .. Kopf_L
return text
--[=[
-- Zusammenbau der Leiste, zuerst der Kopf
local HTML = Tabellenkopf;
HTML = mw.ustring.gsub(HTML,'{Kopf_L}',Kopf_L)
HTML = mw.ustring.gsub(HTML,'{Titel}' ,Titel)
HTML = mw.ustring.gsub(HTML,'{Kopf_R}',Kopf_R)
-- Jetzt "Anzahl" Zeilen ergänzen
for idx = 1, Anzahl do
-- leere Schablone zuweisen
Zeile = Tabellenzeile
-- horizontale Rahmenteile: Erste Zeile oben immer, letzte Zeile unten immer.
if idx == 1 then Border_OL = BW; Border_OR = BW; end
if idx == Anzahl then Border_UL = BW; Border_UR = BW; end
-- Links oder rechts gleicher Wert wie darüber: kein Rahmen und Doppeleintrag entfernen.
if idx > 1 then
if (T_Prev[idx-1] == T_Prev[idx]) then Border_OL = BN; T_Prev[idx] = ""; else Border_OL = BW; end
if (T_Next[idx-1] == T_Next[idx]) then Border_OR = BN; T_Next[idx] = ""; else Border_OR = BW; end
end
-- Links oder rechts gleicher Wert wie darunter: unten kein Rahmen, Eintrag bleibt
if idx < Anzahl then
if (T_Prev[idx+1] == T_Prev[idx]) then Border_UL = BN; else Border_UL = BW; end
if (T_Next[idx+1] == T_Next[idx]) then Border_UR = BN; else Border_UR = BW; end
end
-- Substitution der Platzhalter
Zeile = mw.ustring.gsub(Zeile,'{Prev}',T_Prev[idx])
Zeile = mw.ustring.gsub(Zeile,'{Amt}' ,T_Amt[idx])
Zeile = mw.ustring.gsub(Zeile,'{Zeit}',T_Zeit[idx])
Zeile = mw.ustring.gsub(Zeile,'{Next}',T_Next[idx])
Zeile = mw.ustring.gsub(Zeile,'{Border_OL}',Border_OL)
Zeile = mw.ustring.gsub(Zeile,'{Border_OR}',Border_OR)
Zeile = mw.ustring.gsub(Zeile,'{Border_UL}',Border_UL)
Zeile = mw.ustring.gsub(Zeile,'{Border_UR}',Border_UR)
-- Fertige Zeile anhängen
HTML = HTML..Zeile;
end
-- Tabellenende dazu. Einlesen, um ggf. extern ändern zu können.
HTML = HTML..Tabellenende;
return HTML ]=]
end
return p