Mòdul:log globals
Aparença
A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]
Aquest és un mòdul de depuració que detecta variables incorrectament assignades com a globals. És una versió menys dràstica que la llibreria strict
que mostra un error en la mateixa situació.
Genera un registre Lua després que el mòdul s’hagi carregat, a més d’altres mòduls de suport si és el cas. No detecta duplicacions, el mateix missatge pot aparèixer diverses vegades si és invocat per diverses plantilles d’una pàgina.
Aquest mòdul no hauria d’estar inclòs en cap altre. El seu propòsit és de depuració, no perquè s’executi cada vegada.
Ús:
- Afegiu
require("Module:log globals")
temporalment al principi d’un mòdul. - Previsualitzeu una pàgina posant-la en la caixa "Previsualització d'una pàgina amb aquesta plantilla" i cliqueu el botó "Mostra previsualització".
- Al final de la pàgina de previsualització, obriu la caixa "Perfil de dades de l'analitzador:", si no era oberta. En l’etiqueta "Lua logs" cliqueu l’enllaç "Amplia". Aquí es troba el registre de variables globals. Pot tractar-se d’una errada en el nom o la manca de definició com a
local
. - Després de corregir aquestes variables, i abans de desar res, elimineu la línia inicial
require("Module:log globals")
.
local mt = getmetatable(_G) or {}
local function print(val)
if type(val) == "table" then
local printout = {}
local i = 1
for k, v in pairs(val) do
table.insert(printout, ("[%s] = %s"):format(tostring(k), tostring(v)) )
i = i + 1
if i > 5 then
table.insert(printout, "...")
break
end
end
printout = { table.concat(printout, ", ") }
table.insert(printout, 1, "{")
table.insert(printout, "}")
return table.concat(printout)
elseif type(val) == "string" then
return '"' .. val .. '"'
else
return tostring(val)
end
end
mt.__newindex = function (self, key, value)
if key ~= "arg" then
mw.log("Global variable " .. print(key) .. " was set to "
.. print(value) .. " somewhere:",
debug.traceback("", 2))
end
return rawset(self, key, value)
end
mt.__index = function (self, key)
if key ~= "arg" then
mw.log("Nil global variable " .. print(key) .. " was read somewhere:",
debug.traceback("", 2))
end
return rawget(self, key)
end
setmetatable(_G, mt)