From 052e45705d43bc653ade996f06d8441dc599e918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Wed, 2 Jan 2019 17:41:50 +0800 Subject: =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=83=A8=E5=88=86=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/config.lua | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 server/src/config.lua (limited to 'server/src/config.lua') diff --git a/server/src/config.lua b/server/src/config.lua new file mode 100644 index 00000000..8aff6d40 --- /dev/null +++ b/server/src/config.lua @@ -0,0 +1,63 @@ +local function Boolean(v) + if type(v) == 'boolean' then + return true, v + end + return false +end + +local function Str2Hash(sep) + return function (v) + if type(v) ~= 'string' then + return false + end + local t = {} + for s in v:gmatch('[^'..sep..']+') do + t[s] = true + end + return t + end +end + +local Template = { + diagnostics = { + postSpcae = {true, Boolean}, + spaceOnlyLine = {true, Boolean}, + globals = {{}, Str2Hash ';'}, + } +} + +local Config + +local function init() + if Config then + return + end + Config = {} + for c, t in pairs(Template) do + Config[c] = {} + for k, info in pairs(t) do + Config[c][k] = info[1] + end + end +end + +local function setConfig(config) + pcall(function () + for c, t in pairs(config) do + for k, v in pairs(t) do + local f = Template[c][k] + local suc, v = f(v) + if suc then + Config[c][k] = v + end + end + end + end) +end + +init() + +return { + setConfig = setConfig, + config = Config, +} -- cgit v1.2.3