Advent of Ascension Wiki

1.7.10版本的玩家请注意,本Mod的1.7.10版本在此wiki上正式停止支持。这也意味着,在绝大多数页面上,关于1.7.10版本的内容会被移除。如果您需要关于1.7.10版本的信息,您可以尝试翻阅相应页面在2019年2月之前的历史版本(点击页面右上角的“历史”标签可以查看所有历史版本)
如果您希望评论、询问相关信息,或是表达自己的顾虑,请至官方Discord服务器或移步社区主页

READ MORE

Advent of Ascension Wiki
Advertisement

Template-noinfo.png模块文档 [创建]

此模块没有文档页面。如果你知道如何使用模块,请创建它。

local export = {}

local function encode_value(value, schema)
	if type(value) == "string" then
		return export.encode_str(value)
	elseif type(value) == "table" then
		local first = next(value)
		if first == nil then
			return (schema and (schema[0] or schema[1])) and "[]" or "{}"
		elseif first == 1 then
			return export.encode_array(value, schema)
		else
			return export.encode_object(value, schema)
		end
	elseif type(value) == "boolean" then
		return value and "true" or "false"
	end
end

function export.encode_str(str)
	return '"' .. tostring(str)
		:gsub('["\\]', '\\%0')
		:gsub('\b', '\\b')
		:gsub('\f', '\\f')
		:gsub('\n', '\\n')
		:gsub('\r', '\\r')
		:gsub('\t', '\\t')
		.. '"'
end

function export.encode_array(array, schema)
	local output = {}
	for i, value in ipairs(array) do
		output[#output + 1] = encode_value(value, (type(schema) == "table") and (schema[i] or schema[0]))
	end
	return "[" .. table.concat(output, ",") .. "]"		
end

function export.encode_object(object, schema)
	local output = {}
	for key, value in pairs(object) do
		output[#output + 1] = export.encode_str(key) .. ":" .. encode_value(value, (type(schema) == "table") and (schema[key] or schema[true]))
	end
	return "{" .. table.concat(output, ",") .. "}"
end

return export
Advertisement