Die Dokumentation für dieses Modul kann unter Modul:Dummy/Doku erstellt werden

-- Dieses Modul dient zum Testen diverser Mediawiki-spezifischer Funktionen

local p = {} 

-- Auslesen einer Seite. Parameter: 1=Namensraumnummer und 2= Seitenlemma (ohne Namensraum)
-- Rückgabe: Ein String mit dem Quelltext der Seite
function SeiteLesen(NR,Titel)
	local Seite = mw.title.makeTitle(NR, Titel)
	local Text;
	local Exist = Seite.exists
	if Exist then
		Text = Seite:getContent()
	else
		Text = '<span class="error">Seite existiert nicht!</span>'
	end
	return Exist, Text;
end

--split_newlines: Aufteilen des Seiteninhalts in eine Table mit den Zeilen
local function split_newlines(s)
	local ts = {}
	local str = s ..'\n'
	while 1 do
		local pos = mw.ustring.find(str,'\n',1,true);
		if pos then
			local line = mw.ustring.sub(str,1, pos-1)
			table.insert(ts,line)
			str = mw.ustring.sub(str,pos+1)
		else
			break;
		end
	end
	return ts
end

-- splitaline: Auftrennen einer Textzeile an den Stellen mit einem Separatorzeichen 
local function splitaline(str,Trenner)
	local sep = mw.ustring.sub(Trenner,1,1) or ';'
	local Data = {};
	local Teil = "";
	str = str .. sep;
	if mw.ustring.len(str) < 2 then return false, Data; end 	
	
	while 1 do
		pos = mw.ustring.find(str,sep,1,true);
		if pos then
			Teil = mw.ustring.sub(str,1,pos-1);
			table.insert(Data,Teil);
			str = mw.ustring.sub(str,pos+1)
		else
			break;
		end
	end
	return true, Data;
end

function p.ReadThePage(frame)
	local Namensraum = frame.args[1] or 0;
	local Seitenname = frame.args[2] or "";
	local Felder = {} 
	local isOk, Text  =SeiteLesen(Namensraum,Seitenname) 
	if not isOk then
		return Text;
	end
	local Zeilen = {}
	local Lines= split_newlines(Text,true);

	for i,v in ipairs(Lines) do
		isOk, Felder = splitaline(v,';');
		if isOk then
			table.insert(Zeilen,Felder);
		end
		isOk = false;
	end

--[=[
Hier liegt der Inhalt wie folgt vor:
	Eine Tabelle "Lines" mit den Zeilen als ein String
	Eine Tabelle "Zeilen", deren Elemente eine Tabelle "Felder" ist, welche die aufgetrennten Zeilen enthält.
	]=]
	-- Test: Ausgabe
	local Ausgabe = "";
	local Reihe = "";
	for i,v in ipairs(Zeilen) do
		Reihe = table.concat(Zeilen[i],'~')
		Ausgabe = Ausgabe .. Reihe .. \n'
	end
	return Ausgabe;
end

return p;