diff options
Diffstat (limited to 'ClientHamr/GuiLua')
-rw-r--r-- | ClientHamr/GuiLua/skang.lua | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/ClientHamr/GuiLua/skang.lua b/ClientHamr/GuiLua/skang.lua index dfca188..7ec7a64 100644 --- a/ClientHamr/GuiLua/skang.lua +++ b/ClientHamr/GuiLua/skang.lua | |||
@@ -335,20 +335,22 @@ end | |||
335 | Thing.things = {} -- The sub things this Thing has, for modules and Stuff. | 335 | Thing.things = {} -- The sub things this Thing has, for modules and Stuff. |
336 | Thing.errors = {} -- A list of errors returned by isValid(). | 336 | Thing.errors = {} -- A list of errors returned by isValid(). |
337 | 337 | ||
338 | Thing.isValid = function (self) -- Check if this Thing is valid, return resulting error messages in errors. | 338 | Thing.isValid = function (self, module) -- Check if this Thing is valid, return resulting error messages in errors. |
339 | -- Anything that overrides this method, should call this super method first. | 339 | -- Anything that overrides this method, should call this super method first. |
340 | local value = self.value | 340 | local pre = rawget(module, 'pre') |
341 | if pre then pre = pre .. '_value' else pre = 'value' end | ||
342 | local value = self[pre] | ||
341 | local t = type(value) | 343 | local t = type(value) |
342 | self.errors = {} | 344 | self.errors = {} |
343 | -- TODO - Naturally there should be formatting functions for stuffing Thing stuff into strings, and overridable output functions. | 345 | -- TODO - Naturally there should be formatting functions for stuffing Thing stuff into strings, and overridable output functions. |
344 | if 'nil' == t then | 346 | if 'nil' == t then |
345 | if self.required then table.insert(self.errors, self.names[1] .. ' is required!') end | 347 | if self.required then table.insert(self.errors, module._NAME .. '.' .. self.names[1] .. ' is required!') end |
346 | else | 348 | else |
347 | if self.types[1] ~= t then table.insert(self.errors, self.names[1] .. ' should be a ' .. self.types[1] .. ', but it is a ' .. type(value) .. '!') | 349 | if self.types[1] ~= t then table.insert(self.errors, module._NAME .. '.' .. self.names[1] .. ' should be a ' .. self.types[1] .. ', but it is a ' .. type(value) .. '!') |
348 | else | 350 | else |
349 | if 'number' == t then value = '' .. value end | 351 | if 'number' == t then value = '' .. value end |
350 | if ('number' == t) or ('string' == t) then | 352 | if ('number' == t) or ('string' == t) then |
351 | if 1 ~= string.find(value, '^' .. self.pattern .. '$') then table.insert(self.errors, self.names[1] .. ' does not match pattern "' .. self.pattern .. '"!') end | 353 | if 1 ~= string.find(value, '^' .. self.pattern .. '$') then table.insert(self.errors, module._NAME .. '.' .. self.names[1] .. ' does not match pattern "' .. self.pattern .. '"!') end |
352 | end | 354 | end |
353 | end | 355 | end |
354 | end | 356 | end |
@@ -396,7 +398,7 @@ Thing.__newindex = function (module, key, value) | |||
396 | -- print(thing.module._NAME .. '.' .. name .. '(' .. types .. ') -> ' .. thing.help) | 398 | -- print(thing.module._NAME .. '.' .. name .. '(' .. types .. ') -> ' .. thing.help) |
397 | else | 399 | else |
398 | -- NOTE - invalid values are still stored, this is by design. | 400 | -- NOTE - invalid values are still stored, this is by design. |
399 | if not thing:isValid() then | 401 | if not thing:isValid(module) then |
400 | for i, v in ipairs(thing.errors) do | 402 | for i, v in ipairs(thing.errors) do |
401 | print('ERROR - ' .. v) | 403 | print('ERROR - ' .. v) |
402 | end | 404 | end |