Módulo:No globals

Obxectivo

Este módulo produce un erro se se tenta leer un nulo global ou se se tenta escribir, coa excepción de arg. Para usalo hai que engadir
require('Module:No globals')
no comezo do módulo que o precise. A variable arg está excluída porque é necesario para que a función require de Scribunto funcione correctamente. (Vexa o código fonte de Scribunto aqui.)
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
	if k ~= 'arg' then
		error('Tratou de ler un nulo global ' .. tostring(k), 2)
	end
	return nil
end
function mt.__newindex(t, k, v)
	if k ~= 'arg' then
		error('Tratou de escribir un global ' .. tostring(k), 2)
	end
	rawset(t, k, v)
end
setmetatable(_G, mt)