Modul:No globals: Skillnad mellan sidversioner

Från Järnvägsdata
Jarnvagsdata_se>Jarekt
m (Protected "Module:No globals": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
Jarnvagsdata_se>Jarekt
m (Protected "Module:No globals": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(Ingen skillnad)

Versionen från 12 november 2018 kl. 14.51


Denna modul orsakar ett fel om någon nil global läses eller om någon global skrivs till, med undantag för arg. För att använda, lägg till
require('Module:No globals')
längst upp på modulen med hjälp av den. arg variabeln utesluts eftersom den är nödvändigt för Scribuntos require-funktion för att fungera korrekt. (Se Scribuntos källkod här.)
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
	if k ~= 'arg' then
		error('Tried to read nil global ' .. tostring(k), 2)
	end
	return nil
end
function mt.__newindex(t, k, v)
	if k ~= 'arg' then
		error('Tried to write global ' .. tostring(k), 2)
	end
	rawset(t, k, v)
end
setmetatable(_G, mt)