Jump to content

Module:Log globals

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Erutuon (talk | contribs) at 23:24, 4 July 2018 (from wikt:Module:log globals). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

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)
	rawset(self, key, value)
	mw.log("Global variable " .. print(key) .. " was set to "
		.. print(value) .. " somewhere:",
		debug.traceback("", 2))
end

mt.__index = function (self, key)
	mw.log("Nil global variable " .. print(key) .. " was read somewhere:",
		debug.traceback("", 2))
end

setmetatable(_G, mt)