PtokaX forum

Archive => Archived 4.0 boards => Help with Lua 4 scripts => Topic started by: Typhoon on 06 November, 2004, 00:48:02

Title: Serialze function
Post by: Typhoon on 06 November, 2004, 00:48:02
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

Title:
Post by: bastya_elvtars on 06 November, 2004, 21:48:29
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...