⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialize.lua

📁 cgi for lua, you can build your personal web site by lua
💻 LUA
字号:
------------------------------------------------------------------------------ Serialize tables.-- It works only for tables without cycles and without functions or-- userdata inside it.-- @release $Id: serialize.lua,v 1.7 2007/04/16 14:01:32 tomas Exp $----------------------------------------------------------------------------local ipairs, pairs, type = ipairs, pairs, typelocal format = string.formatlocal sort, tinsert = table.sort, table.insert--local value = nil------------------------------------------------------------------------------ Serializes a table.-- @param tab Table representing the session.-- @param outf Function used to generate the output.-- @param ind String with indentation pattern (default = "").-- @param pre String with indentation prefix (default = "").----------------------------------------------------------------------------local function tabledump (tab, outf, ind, pre)	local sep_n, sep, _n = ",\n", ", ", "\n"	if (not ind) or (ind == "") then ind = ""; sep_n = ", "; _n = "" end	if not pre then pre = "" end	outf ("{")	local p = pre..ind	-- prepare list of keys	local keys = { boolean = {}, number = {}, string = {} }	local total = 0	for key in pairs (tab) do		total = total + 1		local t = type(key)		if t == "string" then			tinsert (keys.string, key)		else			keys[t][key] = true		end	end	local many = total > 5	if not many then sep_n = sep; _n = " " end	outf (_n)	-- serialize entries with numeric keys	if many then		local _f,_s,_v = ipairs(tab)		if _f(_s,_v) then outf (p) end	end	local num = keys.number	local ok = false	-- entries with automatic index	for key, val in ipairs (tab) do		value (val, outf, ind, p)		outf (sep)		num[key] = nil		ok = true	end	if ok and many then outf (_n) end	-- entries with explicit index	for key in pairs (num) do		if many then outf (p) end		outf ("[")		outf (key)		outf ("] = ")		value (tab[key], outf, ind, p)		outf (sep_n)	end	-- serialize entries with boolean keys	local tr = keys.boolean[true]	if tr then		outf (format ("%s[true] = ", many and p or ''))		value (tab[true], outf, ind, p)		outf (sep_n)	end	local fa = keys.boolean[false]	if fa then		outf (format ("%s[false] = ", many and p or ''))		value (tab[false], outf, ind, p)		outf (sep_n)	end	-- serialize entries with string keys	sort (keys.string)	for _, key in ipairs (keys.string) do		outf (format ("%s[%q] = ", many and p or '', key))		value (tab[key], outf, ind, p)		outf (sep_n)	end	if many then outf (pre) end	outf ("}")end---- Serializes a value.--value = function (v, outf, ind, pre)	local t = type (v)	if t == "string" then		outf (format ("%q", v))	elseif t == "number" then		outf (tostring(v))	elseif t == "boolean" then		outf (tostring(v))	elseif t == "table" then		tabledump (v, outf, ind, pre)	else		outf (format ("%q", tostring(v)))	endend----------------------------------------------------------------------------cgilua.serialize = tabledumpreturn tabledump

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -