Modul:Spielwiese
Hier können kurzzeitige Code-Tests oder sonstige Spielereien durchgeführt werden.
Zu weitergehenden und dauerhaften Tests siehe Hilfe:Lua #Erprobung.
local p = {}
local function printError(code)
return '<span class="error">' .. (i18n.errors[code] or code) .. '</span>'
end
local function getChronoLink(pid)
local entity = mw.wikibase.getEntity()
if not entity then
return printError("entity-not-found")
end
-- fetch the first claim of satisfying the needed property
local preds, succs
if entity.claims then
pred = entity.claims[mw.wikibase.resolvePropertyId('P155')]
succ = entity.claims[mw.wikibase.resolvePropertyId('P156')]
series = entity.claims[mw.wikibase.resolvePropertyId('P179')]
end
return series
end
function p.getPred(frame)
return getChronoLink('P155')
end
function p.getSucc(frame)
return getChronoLink('P156')
end
function p.description(frame)
local lemma = frame.args[1]
local wikidata_id
if lemma then
wikidata_id = mw.wikibase.getEntityIdForTitle(lemma) or ""
else wikidata_id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
local description = mw.wikibase.getDescription(wikidata_id) or ""
return "Kurzbeschreibung: " .. description .. " ([[D:" .. wikidata_id .. "|Auf Wikidata bearbeiten]])"
end
-- Funktionen von Benutzer Antonsusi
-- Teilen einer Zeichenkette an enthaltenen Zeilenumbrüchen
local function GetLines(str)
local tbl = {};
local text = str;
local teil;
sep = '\n';
if #str == 0 then
return tbl;
end
text = text ..sep
for i = 1,32767 do -- while vermeiden, damit sich das im Testbetrieb nicht aufhängen kann, 32767 Zeilen sollten reichen.
pos = string.find(text,sep) or 0;
teil = string.sub(text,1,pos-1);
if pos < 1 then
break;
end
table.insert (tbl,teil);
text = string.sub(text,pos+1);
end
return tbl;
end
-- GetPage liest den Quelltext einer Seite aus und speichert die Zeilen in einer table.
-- Aufruf durch {{#invoke:Spielwiese|GetPage|<namespace>|<pagename>}}
function p.GetPage(frame)
local namespace = frame.args[1];
local title = frame.args[2];
local Seite = mw.title.makeTitle( namespace, title);
local Content = Seite:getContent()
local Lines = {};
local c = 0;
Text = mw.ustring.sub( Content, 1, 100); -- Begrenzung
Lines = GetLines(Content);
-- hier liegen die Zeilen als table vor. Es folgt testweise eine "Dummy-Ausgabe"
for i = 1,#Lines do
Lines[i] = Lines[i] ..'<br />';
end
local Info = table.concat(Lines)
return Info;
end
function p.stringcompare(frame)
return mw.ustring.len(frame.args[1]) .. '\n' .. string.len(frame.args[1]) .. '\n';
end
--
return p