1 function Dragonblocks:serialize()
3 for k, v in pairs(self) do
5 local ktype, vtype = type(k), type(v)
6 local serialize_pair = true
7 if ktype == "number" then
8 kdata = "[" .. k .. "]"
9 elseif ktype == "string" then
10 if k:sub(1, 1) == "_" then
11 serialize_pair = false
13 kdata = "[\"" .. k .. "\"]"
16 serialize_pair = false
18 if vtype == "table" then
19 vdata = serializer.serialize(v)
20 elseif vtype == "string" then
21 vdata = "\"" .. v .. "\""
22 elseif vtype == "number" then
24 elseif vtype == "boolean" then
25 vdata = v and "true" or "false"
27 serialize_pair = false
29 if serialize_pair then
30 data = data .. kdata .. "=" .. vdata .. ","
36 function Dragonblocks:deserialize(raw)
42 local f = loadstring(raw)
43 local data = f and f()
44 if type(data) == "table" then
45 table.assign(self, raw)