hey guys and girls...
i have noticed a few different Serialize function , what about if we post all of them inhere, and find out which one is the best and safest .. the one i use is below..
Typhoon?
-- Serialize --
Serialize = function(tTable, sTableName, hFile, sTab)
assert(tTable, "tTable equals nil");
assert(sTableName, "sTableName equals nil ");
assert(hFile, "hFile equals nil ");
assert(type(tTable) == "table", "tTable must be a table ");
assert(type(sTableName) == "string", "sTableName must be a string ");
sTab = sTab or "";
write(hFile, sTab..sTableName.." = {\n" );
for key, value in tTable do
local sKey = (type(key) == "string") and format("[%q]",key) or format("[%d]",key);
if(type(value) == "table") then
Serialize(value, sKey, hFile, sTab.."\t");
else
local sValue = (type(value) == "string") and format("%q",value) or tostring(value);
write(hFile, sTab.."\t"..sKey.." = "..sValue);
end
write(hFile, ",\n");
end
write(hFile, sTab.."}");
end
-- Save Table to File --
SaveToFile = function(file , table , tablename)
local hFile = openfile(file, "w");
Serialize(table, tablename, hFile);
closefile(hFile);
end
-- Load Table From File --
LoadFromFile = function(file)
assert(readfrom(file),file.." is not found.")
dostring(read("*all"))
readfrom()
end
imho serialize always depends on the table structure you are willing to use. function parse(tbl)
local cnt=""
for a,b in tbl do
cnt=cnt.."\t\t\t\t\t\t\t\t\t["..a.."]=\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t[\"who\"]=\""..b["who"].."\",\n\t\t\t\t\t\t\t\t\t[\"when\"]=\""..b["when"]..
"\",\n\t\t\t\t\t\t\t\t\t[\"message\"]=\""..b["message"].."\",\n\t\t\t\t\t\t\t\t\t},\n"
end
return cnt
end
function savemsg()
writeto("offline.ini")
local what="message=\n{"
for a,b in message do
what=what.."\n\t\t\t[\""..a.."\"]={\n"..parse(b).."\t\t\t},"
end
what=what.."\n}"
write(what)
writeto()
end
bah
see this bot (http://www.plop.nl/ptokaxbots/bastya_elvtars/offlinepost.lua) instead...