Difference between revisions of "Module:No globals"
From Summertime Saga Wiki
(Created page with "local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then -- perf optimization here and below: do not load Module:TNT unless there is an error error...") |
m |
||
Line 2: | Line 2: | ||
function mt.__index (t, k) | function mt.__index (t, k) | ||
if k ~= 'arg' then | if k ~= 'arg' then | ||
− | + | error('Tried to read nil global ' .. tostring(k), 2) | |
− | error | ||
end | end | ||
return nil | return nil | ||
Line 9: | Line 8: | ||
function mt.__newindex(t, k, v) | function mt.__newindex(t, k, v) | ||
if k ~= 'arg' then | if k ~= 'arg' then | ||
− | error | + | error('Tried to write global ' .. tostring(k), 2) |
end | end | ||
rawset(t, k, v) | rawset(t, k, v) | ||
end | end | ||
setmetatable(_G, mt) | setmetatable(_G, mt) |
Latest revision as of 12:42, 11 July 2020
This module causes an error if any nil global variable is read or if any global is written to, with the exception of arg. To use, add require('Module:No globals')
to the top of the module using it. The arg variable is excluded because it is necessary for Scribunto’s require function to work properly.
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)