Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/contrib/lua-5.1.5/test/trace-globals.lua
3203 views
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)
39
40