cbi.lua: Implement Flag.validate function

cbi.lua
- Implement Flag.validate function to be overwritable
- rewritten if clause for easier reading ;-)

Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
This commit is contained in:
Christian Schoenebeck 2015-10-30 18:42:38 +01:00
parent 25a44579e5
commit 84a57ec36f

View file

@ -1528,17 +1528,25 @@ function Flag.__init__(self, ...)
end
-- A flag can only have two states: set or unset
function Flag.parse(self, section)
function Flag.parse(self, section, novld)
local fexists = self.map:formvalue(
FEXIST_PREFIX .. self.config .. "." .. section .. "." .. self.option)
if fexists then
local fvalue = self:formvalue(section) and self.enabled or self.disabled
local cvalue = self:cfgvalue(section)
if fvalue ~= self.default or (not self.optional and not self.rmempty) then
self:write(section, fvalue)
else
local val_err
fvalue, val_err = self:validate(fvalue, section)
if not fvalue then
if not novld then
self:add_error(section, "invalid", val_err)
end
return
end
if fvalue == self.default and (self.optional or self.rmempty) then
self:remove(section)
else
self:write(section, fvalue)
end
if (fvalue ~= cvalue) then self.section.changed = true end
else
@ -1550,7 +1558,9 @@ end
function Flag.cfgvalue(self, section)
return AbstractValue.cfgvalue(self, section) or self.default
end
function Flag.validate(self, value)
return value
end
--[[
ListValue - A one-line value predefined in a list