Das Modul:Development hält verschiedene Funktionen zum Debuggen bereit:

print_template_args()

Die Funktion soll helfen, Vorlagen und insbesondere deren Einbindung zu debuggen, wenn nicht klar ist, ob alle und die richtigen Argumente übergeben werden.

Eingebunden in eine Vorlage gibt es seinen Aufruf mit Parametern aus. Man fügt einfach {{#invoke:Development|print_template_args}} temporär in die Vorlage (ggf. nur in die Vorschau) ein und sieht z. B.
Modul:Development|print_template_args: {{Karte|lon=10.9978422|lat=49.4805779|zoom=17}}

print_call_args()

Die Funktion soll helfen, die Argumente eines {{Vorlage | ...}} oder {{#invoke:Modul|Funktion | ...}} oder {{#display_map: ...}} zu debuggen, wenn nicht klar ist, ob alle und die richtigen Argumente übergeben werden.

Eingebunden wird die Funktion anstelle des eigentlichen Invokes. Beispiele:

  • {{ Vorlage | arg1=a | arg2=b }} ändern zu {{ #invoke:Development|print_call_args | arg1=a | arg2=b }} ergibt
    <nowiki>(arg2=b|arg1=a)</nowiki>
  • {{ #invoke:Modulename|Funktionsname | arg1=1 | arg2=2 }} ändern zu {{ #invoke:Development|print_call_args | arg1=1 | arg2=2 }} ergibt
    <nowiki>(arg2=2|arg1=1)</nowiki>
  • {{ #display_map: geojson=Südstadt | enablefullscreen=yes | resizable=yes }} ändern zu {{ #invoke:Development|print_call_args | geojson=Südstadt | enablefullscreen=yes | resizable=yes }} ergibt
    <nowiki>(enablefullscreen=yes|resizable=yes|geojson=Südstadt)</nowiki>

GetFrameAndParentArgs()

Dient Debugging-Zecken. Im Normalfall werden frame und parent-args rückgeliefert, aber diese können in der Lua-Konsole auch nach Schema pargs={} gesetzt werden. Hintergrund: In der Konsole funktioniert frame:getParent().args nicht.

htmlAndWikitextDump()

Diese Funktion hilft HTML- und WikiText für Dump/Log-Ausgaben sichtbar zu machen, der sonst gerendert werden würde. Es werden die bei HTML- und WikiText üblichen eckigen und geschweiften Klammern sowie die Größer/Kleiner-Zeichen in HTML Escape-Zeichen umgewandelt.

Unterseiten


local p = {} --p stands for package

function p.print_template_args()
	local args = ""
	for key, value in pairs(mw.getCurrentFrame():getParent().args) do
		args = args .. "|" .. key .. "=" .. value
	end
    return "<br><code><nowiki>{{" .. mw.getCurrentFrame():getParent():getTitle() .. args .. "}}</nowiki></code><br>"
end

function p.print_call_args(frame)
	local args = ""
	local first_arg = true
	for key, value in pairs(frame.args) do
		if not first_arg then
			args = args .. "|"
		end
		args = args .. key .. "=" .. tostring(value)
		first_arg = false
	end
    return "<br><code><nowiki>(" .. args .. ")</nowiki></code><br>"
end

function p.GetParentArgs(frame)
	local args, noframe = {}, false
	if frame.parentargs then
		args = frame.parentargs -- for debugging purposes in console
		noframe = true
	else
		args = frame:getParent().args
	end
	return args, noframe
end

function p.htmlAndWikitextDump(t)
	local d = ""
	for i = 1, mw.ustring.len(t) do
		c = mw.ustring.byte(t, i)
		if c == mw.ustring.byte("[") then
			d = d .. "&#91;"
		elseif c == mw.ustring.byte("]") then
			d = d .. "&#93;"
		elseif c == mw.ustring.byte("{") then
			d = d .. "&#123;"
		elseif c == mw.ustring.byte("}") then
			d = d .. "&#125;"
		elseif c == mw.ustring.byte("<") then
			d = d .. "&lt;"
		elseif c == mw.ustring.byte(">") then
			d = d .. "&gt;"
		else
			d = d .. mw.ustring.char(c)
		end
	end
	return d
end

return p