Modul:VarDump

Template-info.png Dokumentation für das Modul VarDump[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Das Modul ist in der Lage eine beliebige Lua-Variable auf dem Bildschirm anzuzeigen. Besonders hilfreich ist sie, wenn die Variable komplexe Tabellen, wie z.B. im Falle von Wikidata-Entities beinhaltet.

Verwendung

Das Modul kann man in jedes andere Modul einbinden: Das erfolgt mit folgendem Aufruf:

local vd = require('Modul:VarDump')

Über den folgenden Aufruf erhält man den Inhalt der Variable in lesbarer Form als String. Er enthält Zeilenumbrüche, hierarchische Einrückungen und ist als Programmcode formatiert.

vd.dump ( cfgParams )

Beispiel

Das folgende Beispiel zeigt die Anwendung am Beispiel der komplexen Variable aus dem Modul Modul:Wikidata2/Params
["getOfficialWebsite"] = {
    ["id"] = self
    ["text"] =
}
["LabelLangByID"] = {
    ["id"] = self
    ["lang"] = de
}
["LabelByID"] = {
    ["id"] = self
}
["getValue"] = {
    ["p"] = P31
    ["showranking"] = no
    ["id"] = self
    ["format"] =
    ["test"] = N
    ["ranking"] = best
}
["LabelLang"] = {
    ["lang"] = de
}
["getPOIType"] = {
    ["id"] = self
}
["siteLink"] = {
    ["id"] = self
    ["wiki"] = dewikivoyage
}
["dumpEntity"] = {
    ["id"] = Q4115189
    ["p"] =
}

Einbindung in anderen Modulen

Dieses Modul wird in folgenden Modulen eingebunden und weiter verwendet. Änderungen an diesem Modul wirken sich daher möglicherweise auf andere Features aus sollten daher mit Bedacht vorgenommen werden. Sprich dich daher bitte mit den Modul- und Vorlagenprogrammierern ab.

  • Wikidata2 – Die Funktion dumpEntity zum Anzeigen einer Entity nutzt dieses Modul.

Verwendung in anderen Modulen

Dieses Modul ist notwendig für die Ausführung folgender Module. Bei Anpassungen sollte die Funktionstüchtigkeit der folgenden Module geprüft werden. Benutze dazu auch diese Tracking-Kategorie um Fehler zu finden, die sich dann auf Artikel auswirken:

Hinweise
local vd = {}

function vd.dump ( var )
	
	local display = '<br />'
	local output = ''
	local indent = -4

	function showTable (t)	
		indent = indent + 4
		for key,value in pairs(t) do 
			if ( value == nil ) then
				display = display .. 'nil'
			elseif ( type ( value ) == "table" ) then
				display = display .. '<code>' .. string.rep( '&nbsp;', indent) .. '["' .. key .. '"] = {</code><br />'
				showTable (value)
				display = display .. '<code>' .. string.rep( '&nbsp;', indent) .. '}</code><br />' 
			elseif ( type ( value ) == "function" ) then
				display = display .. 'function'
			elseif ( type ( value ) == "boolean" ) then
				if var then output = 'TRUE' else output = 'FALSE' end
				display = display .. '<code>' .. string.rep( '&nbsp;', indent) .. output .. '</code><br />'
			else
				display = display .. '<code>' .. string.rep( '&nbsp;', indent) .. '["' .. key .. '"] = ' .. value .. '</code><br />'
			end
		end 
		indent = indent - 4
		return
	end	

	if ( var == nil ) then
		display = display .. 'nil'
	elseif ( type ( var ) == "function" ) then
		display = display .. 'function'
	else
		if ( type ( var ) == "table" ) then
			showTable ( var )
		elseif ( type ( var ) == "boolean" ) then
			if var then output = 'TRUE' else output = 'FALSE' end
			display = display .. '<code>' .. string.rep( '&nbsp;', indent) .. output .. '</code><br />'
		else
			display = display .. '<code>'.. var .. '</code><br />'
		end
	end
	
	return display .. '<br />'
	
end

function vd.example ()
	local cfgParams = mw.loadData('Modul:Wikidata2/Params')
	return vd.dump ( cfgParams )
end	

return vd