summaryrefslogtreecommitdiff
path: root/test/dump.lua
blob: ad8d44a6de88436ced135598189c2e8d726979c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
-- dump global environment

function savevar (n,v)
 if v == nil then return end;
 if type(v) == "number" then print(n.."="..v) return end
 if type(v) == "string" then print(n.."='"..v.."'") return end
 if type(v) == "table" then
   if v.__visited__ ~= nil then
     print(n .. "=" .. v.__visited__);
   else
    print(n.."={}")
    v.__visited__ = n;
    local r,f;
    r,f = next(v,nil);
    while r ~= nil do
      if r ~= "__visited__" then
        if type(r) == 'string' then
          savevar(n.."."..r,f)
	else
          savevar(n.."["..r.."]",f)
	end
      end
      r,f = next(v,r)
    end
   end
 end
end

function save ()
 local n,v = nextvar(nil)
  while n ~= nil do 
    savevar(n,v); 
    n,v = nextvar(n)
  end
end

save()