Modul zur Umsetzung der Vorlage:Radsportteam.
local function createlines(text) local pos = 0; local z = {} local rest = "" local row ="" while true do pos = mw.ustring.find(text, "%c") if not pos then break end; row = mw.ustring.sub(text,1,pos - 1) table.insert(z,row); rest = mw.ustring.sub(text,pos + 1,-1) text = rest; if text == "" then break end; end return z; end local function trim(text) while mw.ustring.sub(text,1,1) == " " do text= mw.ustring.sub(text,2,-1); end while string.sub(text,-1,-1) == " " do text= mw.ustring.sub(text,1,-2); end return text; end local function splittheline(text) local pos = 0; local left = "" local right ="" pos = mw.ustring.find(text, "=") if not pos then left= ""; right=""; else left = mw.ustring.sub(text,1,pos - 1) right = mw.ustring.sub(text,pos + 1,-1) end return left, right; end local p = {} function p.Execute(frame) local uci = tostring(trim(frame.args[1] or "")); -- Wiki-Parameter {{{1}}} (Kuerzel) local what = tostring(trim(frame.args[2] or "")); -- Wiki-Parameter {{{2}}} (leer, Jahr oder anderen Eintrag im Datenblatt) local linktext = tostring(trim(frame.args[3] or "")); -- Wiki-Parameter {{{text}}} local hasnolink = tostring(trim(frame.args[4] or "")) ~= ""; -- alter Wiki-Parameter {{{nolink}}} local wikitext = ""; -- Wiki-Text (wird zurueckgegeben) local daten = {}; -- nimmt den Inhalt des Datenblatts auf -- Erst einen Widerspruch abfangen -- Erst einen alten Parameter abfangen if hasnolink then wikitext ='<span class="error">Der Parameter "nolink" wird von der Vorlage nicht mehr ausgewertet!</span>'; return wikitext; end -- Jetzt das Blatt einlesen und die Tabelle "Daten" damit fuellen. -- aus "links=rechts" wird "daten.links = rechts" local pagetext = ""; local pagename ="Radsportteam/".. uci; local zeilen = {}; local links = {}; local rechts = {}; local li; local re; pagetext= frame:expandTemplate{ title = pagename, args = {} } or ""; if pagetext == "" then wikitext ='<span class="error">Das angegeben Kürzel ('.. uci ..') ist ungültig!</span>'; return wikitext; end pagetext = pagetext .. "\n"; zeilen = createlines(pagetext); for i,v in ipairs(zeilen) do li,re = splittheline(tostring(v)); li = trim(li or ""); re = trim(re or ""); if (li ~= "") then daten[li] = re; end end daten['uci'] = uci; -- was nicht mehr gebraucht wird freigeben: pagetext = nil; pagename = nil; zeilen = nil; links = nil; rechts = nil; li = nil; re = nil; -- Daten etwas testen und Wikilink zusammenbauen local lemma = tostring(daten.link) or ""; if ( lemma == "") then return '<span class="error">Im Datenblatt wurde kein Linkziel gefunden!</span>'; end if ((tostring(daten.name) or "") == "") then daten.name = lemma; end -- bei individuellem Text den Wikitext erstellen und Ende if (linktext ~="") then if lemma == linktext then wikitext = "[[" .. lemma .."]]"; else wikitext = "[[" .. lemma .."|" .. linktext .. "]]"; end return wikitext; end -- ansonsten feststellen, was gefragt wird: local index = ""; if what == "" then index = "name"; elseif what=="lemma" then -- explizit nur das Lemma verlinkt wiedergeben: wikitext = "[[" .. lemma .."]]"; return wikitext; elseif what=="#" then -- nur das Kuerzel index = "uci"; else index = "name-"..what; end if daten[index] then linktext = tostring(daten[index]); if lemma == linktext then wikitext = "[[" .. lemma .."]]"; else wikitext = "[[" .. lemma .."|" .. linktext .. "]]"; end else wikitext ='<span class="error">Der angeforderte Datenwert für "' .. tostring(index) .. '" wurde nicht gefunden!</span>'; end return wikitext; end return p;