Difference between revisions of "Module:No globals"

From RobotX
Jump to navigation Jump to search
Wikpedia>Xaosflux
m (Changed protection level for "Module:No globals": Used in interface MediaWiki:Protectedpagetext ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite)))
Mediawiki>DannyS712
m (Protected "Module:No globals": Highly visible template: Redundant to current transclusion on a cascading protected page, but better safe than sorry ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
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)
+
-- perf optimization here and below: do not load Module:TNT unless there is an error
 +
error(require('Module:TNT').format('I18n/No globals', 'err-read', tostring(k)), 2)
 
end
 
end
 
return nil
 
return nil
Line 8: Line 9:
 
function mt.__newindex(t, k, v)
 
function mt.__newindex(t, k, v)
 
if k ~= 'arg' then
 
if k ~= 'arg' then
error('Tried to write global ' .. tostring(k), 2)
+
error(require('Module:TNT').format('I18n/No globals', 'err-write', tostring(k)), 2)
 
end
 
end
 
rawset(t, k, v)
 
rawset(t, k, v)
 
end
 
end
 
setmetatable(_G, mt)
 
setmetatable(_G, mt)

Revision as of 05:44, 30 August 2019

warning Warning:Do not edit. This page is maintained by a bot. All edits should be done at mediawiki.org.   (translate this warning)
Please help translate this page.

Usage

Include this module at the top of your code. An error will be raised any time your code tries to read or write to a non-local (undeclared) variable.

Tests

Module:No globals success: 1, error: 0, skipped: 0
Module:No globals/sandbox success: 1, error: 0, skipped: 0



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(require('Module:TNT').format('I18n/No globals', 'err-read', tostring(k)), 2)
	end
	return nil
end
function mt.__newindex(t, k, v)
	if k ~= 'arg' then
		error(require('Module:TNT').format('I18n/No globals', 'err-write', tostring(k)), 2)
	end
	rawset(t, k, v)
end
setmetatable(_G, mt)