Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
local function loadvar(varname)
local ok, val = pcall(assert(loadstring('return site.' .. varname)))
if ok then
return val
else
return nil
end
end
local function assert_type(var, t, msg)
assert(type(var) == t, msg)
end
function need_string(varname, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'string', "site.conf error: expected `" .. varname .. "' to be a string")
return var
end
function need_string_match(varname, pat, required)
local var = need_string(varname, required)
if not var then
return nil
end
assert(var:match(pat), "site.conf error: expected `" .. varname .. "' to match pattern `" .. pat .. "'")
return var
end
function need_number(varname, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'number', "site.conf error: expected `" .. varname .. "' to be a number")
return var
end
function need_boolean(varname, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'boolean', "site.conf error: expected `" .. varname .. "' to be a boolean")
return var
end
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
function need_array(varname, subcheck, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'table', "site.conf error: expected `" .. varname .. "' to be an array")
for _, e in ipairs(var) do
subcheck(e)
end
return var
end
function need_table(varname, subcheck, required)
local var = loadvar(varname)
if required == false and var == nil then
return nil
end
assert_type(var, 'table', "site.conf error: expected `" .. varname .. "' to be a table")
for k, v in pairs(var) do
subcheck(k, v)
end
return var
end
function need_string_array(varname, required)
return assert(pcall(need_array, varname, function(e) assert_type(e, 'string') end, required),
"site.conf error: expected `" .. varname .. "' to be a string array")
end