summaryrefslogtreecommitdiffhomepage
path: root/libs/core
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-07-26 17:24:46 +0000
committerSteven Barth <steven@midlink.org>2008-07-26 17:24:46 +0000
commite5df13e80e7b652492e6d2b26afca43e94262e29 (patch)
tree9abec5db04221eac266f49964b5c22298b663272 /libs/core
parent47774572e08b64da90c834410637e92e8b2a9051 (diff)
libs: Fixed serialization stuff
Diffstat (limited to 'libs/core')
-rw-r--r--libs/core/luasrc/util.lua33
1 files changed, 9 insertions, 24 deletions
diff --git a/libs/core/luasrc/util.lua b/libs/core/luasrc/util.lua
index 2d821acff..48b6fa063 100644
--- a/libs/core/luasrc/util.lua
+++ b/libs/core/luasrc/util.lua
@@ -375,27 +375,14 @@ function clone(object, deep)
return copy
end
--- Test whether the given table value is a numerically indexed table.
-function _is_numeric_table(t)
- local k = pairs(t)(t)
- return ( tonumber(k) ~= nil )
-end
-
-- Serialize the contents of a table value.
function _serialize_table(t)
local data = ""
- if _is_numeric_table(t) then
- for i, v in ipairs(t) do
- v = serialize_data(v)
- data = data .. ( #data > 0 and ", " or "" ) .. v
- end
- else
- for k, v in pairs(t) do
- k = serialize_data(k)
- v = serialize_data(v)
- data = data .. ( #data > 0 and "; " or "" ) ..
- '[' .. k .. '] = ' .. v
- end
+ for k, v in pairs(t) do
+ k = serialize_data(k)
+ v = serialize_data(v)
+ data = data .. ( #data > 0 and ", " or "" ) ..
+ '[' .. k .. '] = ' .. v
end
return data
end
@@ -410,15 +397,13 @@ function serialize_data(val)
if val == nil then
return "nil"
elseif type(val) == "number" then
- return tostring(val)
+ return val
elseif type(val) == "string" then
- val = val:gsub("\\", "\\\\")
- :gsub("\r", "\\r")
- :gsub("\n", "\\n")
- :gsub('"','\\"')
- return '"' .. val .. '"'
+ return string.format("%q", val)
elseif type(val) == "boolean" then
return val and "true" or "false"
+ elseif type(val) == "function" then
+ return string.format("loadstring(%q)", get_bytecode(val))
elseif type(val) == "table" then
return "{ " .. _serialize_table(val) .. " }"
else