mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto
synced 2024-12-03 20:36:18 +00:00
829c53ef05
For the most part, it is a good idea to avoid global variables and use `local` variables instead. Quoting from the ScopeTutorial[1], "The general rule is to always use local variables, unless it's necessary for every part of your program to be able to access the variable (which is very rare)." Wikimedia module authors have written "Module:No globals", which errors on the use of any global variable. On the English Wikipedia, this is used on 32% of pages (18 million). Wikidata[2] indicates that it's been copied to 334 other wikis. Lua itself distributes an extra named "strict.lua"[3], which is what this is based off of. Similar to bit32.lua, this is a pure-Lua library that can be imported/enabled with `require( "strict" )` at the top of a module. The two changes I made from Lua's strict is to exempt the `arg` key, which is used internally by Scribunto, and remove `what()`, since we don't enable access to `debug.getinfo()` for security reasons. [1] https://lua-users.org/wiki/ScopeTutorial [2] https://www.wikidata.org/wiki/Q16748603 [3] http://www.lua.org/extras/5.1/strict.lua Bug: T209310 Change-Id: I46ee6f630ac6b26c68c31becd1f3b9d961bcab29 |
||
---|---|---|
.. | ||
luabit | ||
ustring | ||
bit32.lua | ||
libraryUtil.lua | ||
mw.hash.lua | ||
mw.html.lua | ||
mw.language.lua | ||
mw.lua | ||
mw.message.lua | ||
mw.site.lua | ||
mw.text.lua | ||
mw.title.lua | ||
mw.uri.lua | ||
mw.ustring.lua | ||
mwInit.lua | ||
package.lua | ||
strict.lua |