50 lines
847 B
Lua
50 lines
847 B
Lua
local find=string.find
|
|
local tabs={
|
|
[0]="",
|
|
"\t",
|
|
"\t\t",
|
|
"\t\t\t",
|
|
"\t\t\t\t",
|
|
"\t\t\t\t\t",
|
|
}
|
|
return function(L,t)
|
|
local s
|
|
if t then
|
|
s="{\n"
|
|
else
|
|
s="return{\n"
|
|
t=1
|
|
if type(L)~='table'then
|
|
return
|
|
end
|
|
end
|
|
local count=1
|
|
for k,v in next,L do
|
|
local T=type(k)
|
|
if T=='number'then
|
|
if k==count then
|
|
k=""
|
|
count=count+1
|
|
else
|
|
k="["..k.."]="
|
|
end
|
|
elseif T=='string'then
|
|
if find(k,"[^0-9a-zA-Z_]")then
|
|
k="[\""..k.."\"]="
|
|
else
|
|
k=k.."="
|
|
end
|
|
elseif T=='boolean'then k="["..k.."]="
|
|
else error("Error key type!")
|
|
end
|
|
T=type(v)
|
|
if T=='number'then v=tostring(v)
|
|
elseif T=='string'then v="\""..v.."\""
|
|
elseif T=='table'then v=TABLE.dump(v,t+1)
|
|
elseif T=='boolean'then v=tostring(v)
|
|
else error("Error data type!")
|
|
end
|
|
s=s..tabs[t]..k..v..",\n"
|
|
end
|
|
return s..tabs[t-1].."}"
|
|
end |