Difference between revisions of "Module:No globals"
Jump to navigation
Jump to search
Randombell (talk | contribs) m (1 revision imported) |
Randombell (talk | contribs) m (1 revision imported) |
||
(One intermediate revision by one other user not shown) | |||
Line 2: | Line 2: | ||
function mt.__index (t, k) | function mt.__index (t, k) | ||
if k ~= 'arg' then | if k ~= 'arg' then | ||
− | error(' | + | -- 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(' | + | 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) |
Latest revision as of 13:59, 8 June 2022
<templatestyles src="Module:Message box/ombox.css"></templatestyles>
<templatestyles src="Module:Message box/ombox.css"></templatestyles>
40px | This Lua module is used on 8,900,000+ pages, which is 877,235% of all pages. To avoid large-scale disruption and unnecessary server load, any changes to this module should first be tested in its /sandbox or /testcases subpages. The tested changes can then be added to this page in one single edit. Please consider discussing any changes on the talk page before implementing them. |
40x40px | <translate> This module is [[<tvar name=1>Special:MyLanguage/Category:Modules subject to page protection</tvar>|subject to {{<tvar name=2>#if:</tvar>|cascading|page}} protection]].</translate> <translate> It is a highly visible module in use by a very large number of pages.</translate> <translate> Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[<tvar name=1>Special:MyLanguage/Project:Protected page</tvar>|protected]] from editing.</translate> |
This module causes an error if any nil global is read or if any global is written to, with the exception of arg. To use, add <syntaxhighlight lang="lua" inline>require('Module:No globals')</syntaxhighlight> 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. (See the Scribunto source code here.)
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)