aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--ClientHamr/GuiLua/skang.lua24
-rw-r--r--ClientHamr/GuiLua/test.lua13
2 files changed, 30 insertions, 7 deletions
diff --git a/ClientHamr/GuiLua/skang.lua b/ClientHamr/GuiLua/skang.lua
index f88ff1c..cb97a76 100644
--- a/ClientHamr/GuiLua/skang.lua
+++ b/ClientHamr/GuiLua/skang.lua
@@ -217,10 +217,17 @@ Thing.append = function (self,data) -- Append to the value of this Thing.
217 end 217 end
218 218
219Thing.isValid = function (self) -- Check if this Thing is valid, return resulting error messages in errors. 219Thing.isValid = function (self) -- Check if this Thing is valid, return resulting error messages in errors.
220 self.errors = {} 220 -- Anything that overrides this method, should call this super method first.
221 -- TODO - Should check for required, matching mask, matching type, etc. 221 local value = self.module[self.names[1] ]
222 return true 222 self.errors = {}
223 end 223 if 'nil' == type(value) then
224 if self.required then table.insert(self.errors, self.names[1] .. ' is required!') end
225 else
226 if self.types[1] ~= type(value) then table.insert(self.errors, self.names[1] .. ' should be a ' .. self.types[1] .. ', but it is a ' .. type(value) .. '!') end
227 end
228 -- TODO - Should check for matching mask, and anything else.
229 return #(self.errors) == 0
230end
224 231
225Thing.remove = function (self) -- Delete this Thing. 232Thing.remove = function (self) -- Delete this Thing.
226 end 233 end
@@ -264,8 +271,13 @@ Thing.__newindex = function (table, key, value)
264 end 271 end
265 print(thing.module._NAME .. '.' .. name .. '(' .. types .. ') -> ' .. thing.help) 272 print(thing.module._NAME .. '.' .. name .. '(' .. types .. ') -> ' .. thing.help)
266 else 273 else
267 thing:isValid() 274 -- NOTE - invalid values are still stored, this is by design.
268 print(thing.types[1] .. ' ' .. thing.module._NAME .. '.' .. name .. ' = ' .. (value or 'nil') .. ' -> ' .. thing.help) 275 if not thing:isValid() then
276 for i, v in ipairs(thing.errors) do
277 print('ERROR - ' .. v)
278 end
279 end
280-- print(thing.types[1] .. ' ' .. thing.module._NAME .. '.' .. name .. ' = ' .. (value or 'nil') .. ' -> ' .. thing.help)
269 -- TODO - Go through it's linked things and set them to. 281 -- TODO - Go through it's linked things and set them to.
270 end 282 end
271 else 283 else
diff --git a/ClientHamr/GuiLua/test.lua b/ClientHamr/GuiLua/test.lua
index 97adf9d..bc595fe 100644
--- a/ClientHamr/GuiLua/test.lua
+++ b/ClientHamr/GuiLua/test.lua
@@ -30,7 +30,7 @@ print('code')
30-- A variable that is private to this module. 30-- A variable that is private to this module.
31local foo 31local foo
32 32
33skang.thing(_M, 'fooble,f', 'Help text goes here', 1, nil, '"edit", "The fooble:", 1, 1, 10, 50') 33skang.thing(_M, 'fooble,f', 'Help text goes here', 1, 'number', '"edit", "The fooble:", 1, 1, 10, 50', true)
34skang.thing(_M, 'bar', 'Help text', "Default") 34skang.thing(_M, 'bar', 'Help text', "Default")
35 35
36-- We can use inline functions if we don't need the function internally. 36-- We can use inline functions if we don't need the function internally.
@@ -58,3 +58,14 @@ test.fooble = 42
58print('f is now ' .. test.fooble .. ' ' .. test.f) 58print('f is now ' .. test.fooble .. ' ' .. test.f)
59test.fooble = nil 59test.fooble = nil
60print('f is now ' .. test.fooble .. ' ' .. test.f) 60print('f is now ' .. test.fooble .. ' ' .. test.f)
61-- First, disable the default value, so we see "is required" errors.
62skang.things.f.default = nil
63test.fooble = 42
64test.fooble = 'Should fail.'
65test.fooble = 42
66test.fooble = nil
67test.fooble = nil
68test.fooble = 42
69test.fooble = true
70test.f = 42
71test.f = nil