From 4d94cc805df09913731b1cb02696c8f10c9d5887 Mon Sep 17 00:00:00 2001 From: binarycat Date: Tue, 15 Mar 2022 20:16:35 -0400 Subject: [PATCH] serialization function --- code/serialize.lua | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 code/serialize.lua diff --git a/code/serialize.lua b/code/serialize.lua new file mode 100644 index 0000000..b166a99 --- /dev/null +++ b/code/serialize.lua @@ -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