Modul:No globals

Aus Wikivoyage
Template-info.png Dokumentation für das Modul No globals[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Dieses Modul dient Programmieren zum Debuggen von in der Programmiersprache Lua geschriebenen Modulen.

Dieses Modul löst einen Fehler aus und bricht das Lua-Script ab, wenn eine globale Lua-Variable mit dem Wert nil eingelesen oder eine globale Variable überschrieben wird. Eine Ausnahme stellen die Variablen arg und _ dar. Um dieses Modul zu nutzen, trägt man an den Anfang des Skripts require('Module:No globals') ein. Die Variable arg ist ausgeschlossen, weil sie für die korrekte Arbeitsweise der Scribunto-Funktion require notwendig ist (siehe auch den Scribunto-Quellcode).

Das Modul wird hauptsächlich in den Entwicklungsphasen genutzt, während es in den Produktivversion entfernt werden kann.
Hinweise
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
	if k ~= 'arg' and k ~= '_' then
		error('Tried to read nil global ' .. tostring(k), 2)
	end
	return nil
end
function mt.__newindex(t, k, v)
	if k ~= 'arg' and k ~= '_' then
		error('Tried to write global ' .. tostring(k), 2)
	end
	rawset(t, k, v)
end
setmetatable(_G, mt)