diff options
author | Steven Barth <steven@midlink.org> | 2008-07-26 17:24:46 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-07-26 17:24:46 +0000 |
commit | e5df13e80e7b652492e6d2b26afca43e94262e29 (patch) | |
tree | 9abec5db04221eac266f49964b5c22298b663272 /libs/core | |
parent | 47774572e08b64da90c834410637e92e8b2a9051 (diff) |
libs: Fixed serialization stuff
Diffstat (limited to 'libs/core')
-rw-r--r-- | libs/core/luasrc/util.lua | 33 |
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 |