summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-23 22:47:46 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-23 22:47:46 +0100
commite81590288f5aa133efbf8e53e3366ed715f1d7fd (patch)
tree51c86977fca7f2f1ffb452cfe3a43597f5a41a66
parent026b1a34f5259c7cb907c4954bd3d27c9a3a961d (diff)
downloadclod-e81590288f5aa133efbf8e53e3366ed715f1d7fd.tar.gz
CLOD: reorder code and tidy for better coverage testing
-rw-r--r--lib/clod.lua38
1 files changed, 17 insertions, 21 deletions
diff --git a/lib/clod.lua b/lib/clod.lua
index 3e70ca2..b1e5ccd 100644
--- a/lib/clod.lua
+++ b/lib/clod.lua
@@ -21,7 +21,19 @@ local metadata = setmetatable({}, {__mode = "k"})
-- metatable for settings objects
local settings_mt = {}
-local gen_settings
+
+-- Helper routines
+local function gen_settings(tab, prefix)
+ local meta = metadata[tab]
+ local clodconf = meta.conf or tab
+ local newmeta = {
+ conf = clodconf,
+ prefix = prefix
+ }
+ local ret = setmetatable({}, settings_mt)
+ metadata[ret] = newmeta
+ return ret
+end
function settings_mt:__index(subkey)
local meta = metadata[self]
@@ -152,27 +164,11 @@ function settings_mt:__newindex(subkey, value)
insert_after(before, {})
before = before.next
end
- insert_after(before, {
- key = key,
- value = value,
- })
+ insert_after(before, { key = key, value = value })
confmeta.settings[key] = before.next
end
end
--- Helper routines
-function gen_settings(tab, prefix)
- local meta = metadata[tab]
- local clodconf = meta.conf or tab
- local newmeta = {
- conf = clodconf,
- prefix = prefix
- }
- local ret = setmetatable({}, settings_mt)
- metadata[ret] = newmeta
- return ret
-end
-
-- Methods for clod instances
local methods = {}
@@ -181,16 +177,16 @@ function methods:serialise()
local retstr = {}
local function serialise_entry(entry)
local key, value, line = entry.key, entry.value, ""
- if entry.key then
+ if key then
local vtype = type(value)
+ assert((vtype == "string" or vtype == "number" or vtype == "boolean"),
+ "Unexpected " .. vtype .. " in key: " .. key)
if vtype == "string" then
line = ("%s %q"):format(key, value)
elseif vtype == "number" then
line = ("%s = %d"):format(key, value)
elseif vtype == "boolean" then
line = ("%s = %s"):format(key, value and "true" or "false")
- else
- line = ("-- %s was a %s. Cannot serialise"):format(key, vtype)
end
end
retstr[#retstr+1] = line