?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  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.