mirror of
https://github.com/notwa/mm
synced 2024-11-04 22:49:03 -08:00
fix a certain case in serialize.lua
this should actually check if the whole string matches [A-Za-z_][0-9A-Za-z_]* but thats for another time
This commit is contained in:
parent
617a10cba3
commit
e6b5fe590f
1 changed files with 7 additions and 4 deletions
|
@ -16,7 +16,9 @@ local function kill_bom(s)
|
|||
end
|
||||
|
||||
local function sanitize(v)
|
||||
return type(v) == 'string' and strfmt('%q', v) or tostring(v)
|
||||
local force = type(v) == 'string' and v:sub(1, 1):match('%d')
|
||||
force = force and true or false
|
||||
return type(v) == 'string' and strfmt('%q', v) or tostring(v), force
|
||||
end
|
||||
|
||||
local function _serialize(value, writer, level)
|
||||
|
@ -25,15 +27,16 @@ local function _serialize(value, writer, level)
|
|||
local indent = strrep('\t', level)
|
||||
writer('{\n')
|
||||
for key,value in opairs(value) do
|
||||
local sane = sanitize(key)
|
||||
local keyval = sane == '"'..key..'"' and key or '['..sane..']'
|
||||
local sane, force = sanitize(key)
|
||||
local keyval = (sane == '"'..key..'"' and not force) and key or '['..sane..']'
|
||||
writer(indent..keyval..' = ')
|
||||
_serialize(value, writer, level + 1)
|
||||
writer(',\n')
|
||||
end
|
||||
writer(strrep('\t', level - 1)..'}')
|
||||
else
|
||||
writer(sanitize(value))
|
||||
local sane, force = sanitize(value)
|
||||
writer(sane)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue