1234567891011121314151617181920212223242526272829303132 |
- local function repr(x)
- if type(x) == "string" then
- return ("%q"):format(x)
- else
- return tostring(x)
- end
- end
- local function my_serialize_2(t, level)
- level = level or 0
- local lines = { }
- local indent = ("\t"):rep(level)
- for k, v in pairs(t) do
- local typ = type(v)
- if typ == "table" then
- table.insert(lines,
- indent..("[%s] = {\n"):format(repr(k))
- ..my_serialize_2(v, level + 1).."\n"
- ..indent.."},")
- else
- table.insert(lines,
- indent..("[%s] = %s,"):format(repr(k), repr(v)))
- end
- end
- return table.concat(lines, "\n")
- end
- function xban.serialize(t)
- return "return {\n"..my_serialize_2(t, 1).."\n}"
- end
|