serialization function

This commit is contained in:
binarycat 2022-03-15 20:16:35 -04:00
parent 9c4b5431ee
commit 4d94cc805d

31
code/serialize.lua Normal file
View 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