From ac863531be77ca2f453142b7a7372184eefc4912 Mon Sep 17 00:00:00 2001
From: "p.kosyh"
Date: Sun, 20 Jun 2010 14:05:49 +0000
Subject: [PATCH] more clever save
---
stead/stead.lua | 26 +++-----------------------
1 file changed, 3 insertions(+), 23 deletions(-)
diff --git a/stead/stead.lua b/stead/stead.lua
index fccffaf..b0b1f46 100644
--- a/stead/stead.lua
+++ b/stead/stead.lua
@@ -1320,7 +1320,6 @@ function do_ini(self)
for_each(game, "game", check_list, isList)
- stead.fixups:apply();
for_each_object(call_ini);
me():tag();
@@ -1444,7 +1443,7 @@ function savemembers(h, self, name, need)
end
if type(k) == 'string' then
- savevar(h, v, name..'["'..k:gsub('"','\\"')..'"]', need or need2);
+ savevar(h, v, name..'['..stead.string.format("%q",k)..']', need or need2);
else
savevar(h, v, name.."["..k.."]", need or need2)
end
@@ -1478,8 +1477,7 @@ function savevar (h, v, n, need)
if type(v.key_name) == 'string' and v.key_name ~= n and
'_G["'..v.key_name..'"]' ~= n then -- just xref
if need then
- local w = stead.string.format("%s = ref(%q)", n, v.key_name);
- h:write(stead.string.format("%s = stead.fixups:add(%q)\n", n, w));
+ h:write(stead.string.format("%s = %s\n", n, v.key_name));
end
return
end
@@ -1538,6 +1536,7 @@ function game_save(self, name, file)
if type(n) == 'string' and n ~= "" then
h:write("-- $Name: "..n:gsub("\n","\\n").."$\n");
end
+ save_object('allocator', allocator, h); -- always first!
for_each_object(save_object, h);
save_object('game', self, h);
save_object('_G', _G, h);
@@ -1920,25 +1919,6 @@ function delete(v)
allocator:delete(v);
end
-stead.fixups = {
- fix = {},
- apply = function(s)
- local i,v
- for i,v in ipairs(s.fix) do
- local f = loadstring(v);
- if type(f) ~= 'function' then
- error ("Error while fixup:" .. tostring(v))
- end
- f();
- end
- s.fix = {}
- end,
- add = function(s, str)
- stead.table.insert(s.fix, str)
- return nil
- end
-}
-
timer = obj { -- timer calls stead.timer callback
nam = 'timer',
ini = function(s)