root/src/lua/test/trace-globals.lua

Revision 22d1941d0ca5ba7027cdfa51ce34bd1d8fb1931e, 0.7 kB (checked in by Theo Schlossnagle <jesus@omniti.com>, 6 years ago)

take the version out... it is what it is

  • Property mode set to 100644
Line 
1 -- trace assigments to global variables
2
3 do
4  -- a tostring that quotes strings. note the use of the original tostring.
5  local _tostring=tostring
6  local tostring=function(a)
7   if type(a)=="string" then
8    return string.format("%q",a)
9   else
10    return _tostring(a)
11   end
12  end
13
14  local log=function (name,old,new)
15   local t=debug.getinfo(3,"Sl")
16   local line=t.currentline
17   io.write(t.short_src)
18   if line>=0 then io.write(":",line) end
19   io.write(": ",name," is now ",tostring(new)," (was ",tostring(old),")","\n")
20  end
21
22  local g={}
23  local set=function (t,name,value)
24   log(name,g[name],value)
25   g[name]=value
26  end
27  setmetatable(getfenv(),{__index=g,__newindex=set})
28 end
29
30 -- an example
31
32 a=1
33 b=2
34 a=10
35 b=20
36 b=nil
37 b=200
38 print(a,b,c)
Note: See TracBrowser for help on using the browser.