The wiki has moved!

Visit the new wiki at stationeers-wiki.com The old wiki here at legacy.stationeers-wiki.com will sunset eventually.

Edits made after the 7th of March 6PM EST were NOT carried over to the new server as previously announced right here in this box.

 Actions

Module

Difference between revisions of "No globals"

From Unofficial Stationeers Wiki

(Created page with 'local mt = getmetatable(_G) or {} local oldIndex = mt.__index or function() return nil end mt.__index = function(t, k) if k ~= 'name' and k ~= 'arg' then erro...')
 
m (4 revisions imported)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
local mt = getmetatable(_G) or {}
 
local mt = getmetatable(_G) or {}
local oldIndex = mt.__index or function() return nil end
+
function mt.__index (t, k)
mt.__index = function(t, k)
+
if k ~= 'arg' then
if k ~= 'name' and k ~= 'arg' then
 
 
error('Tried to read nil global ' .. tostring(k), 2)
 
error('Tried to read nil global ' .. tostring(k), 2)
 
end
 
end
return oldIndex(t, k)
+
return nil
 
end
 
end
local oldNewindex = mt.__newindex or rawset
 
 
function mt.__newindex(t, k, v)
 
function mt.__newindex(t, k, v)
if k ~= 'name' and k ~= 'arg' then
+
if k ~= 'arg' then
 
error('Tried to write global ' .. tostring(k), 2)
 
error('Tried to write global ' .. tostring(k), 2)
 
end
 
end
oldNewindex(t, k, v)
+
rawset(t, k, v)
 
end
 
end
 
setmetatable(_G, mt)
 
setmetatable(_G, mt)

Latest revision as of 15:00, 14 July 2018

Documentation for this module may be created at Module:No globals/doc

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)