serialization function
This commit is contained in:
parent
9c4b5431ee
commit
4d94cc805d
31
code/serialize.lua
Normal file
31
code/serialize.lua
Normal file
@ -0,0 +1,31 @@
|
||||
local function quote(str, lvl)
|
||||
--lvl = lvl or
|
||||
local rp = "]"..(lvl or "").."]"
|
||||
if string.match(str, rp) then
|
||||
return quote(str, (lvl or "") .. "=")
|
||||
end
|
||||
|
||||
return "["..(lvl or "").."["..str..rp
|
||||
end
|
||||
|
||||
function serialize_lua_value(val)
|
||||
if type(val) == "number" then
|
||||
return tostring(val)
|
||||
elseif type(val) == "string" then
|
||||
-- TODO: use different quotes if ']]' appears in the value
|
||||
return quote(val)
|
||||
elseif type(val) == "table" then
|
||||
local r = "{"
|
||||
for k, v in pairs(val) do
|
||||
r = r .. "[ "..serialize_lua_value(k).." ]="..serialize_lua_value(v)..","
|
||||
end
|
||||
return r .. "}"
|
||||
elseif val == nil then
|
||||
return "nil"
|
||||
elseif val == false then
|
||||
return "false"
|
||||
elseif val == true then
|
||||
return "true"
|
||||
end
|
||||
error("serialization failed")
|
||||
end
|
Loading…
Reference in New Issue
Block a user