diff options
author | Steven Barth <steven@midlink.org> | 2008-07-16 07:24:54 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-07-16 07:24:54 +0000 |
commit | ced11a4a1372516894b8a2f29c159b1f03b0bfd9 (patch) | |
tree | 8cf42a464fa0a3425be0cf9cb5249e727c38be46 /libs | |
parent | 52a063cc5c9509ed95c618086a5aacde90af447c (diff) |
libs/cbi: Cleaned up *Section.create
Diffstat (limited to 'libs')
-rw-r--r-- | libs/cbi/luasrc/cbi.lua | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 6123e273b..879717acf 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -214,6 +214,7 @@ function AbstractSection.__init__(self, map, sectiontype, ...) self.map = map self.config = map.config self.optionals = {} + self.defaults = {} self.optional = true self.addremove = false @@ -303,7 +304,21 @@ end -- Creates the section function AbstractSection.create(self, section) - return self.map:set(section, nil, self.sectiontype) + local stat = self.map:set(section, nil, self.sectiontype) + + if stat then + for k,v in pairs(self.children) do + if v.default then + self.map:set(section, v.option, v.default) + end + end + + for k,v in pairs(self.defaults) do + self.map:set(section, k, v) + end + end + + return stat end @@ -386,17 +401,8 @@ end -- Creates a new section of this type with the given name (or anonymous) function TypedSection.create(self, name) - if name then - self.map:set(name, nil, self.sectiontype) - else - name = self.map:add(self.sectiontype) - end - - for k,v in pairs(self.children) do - if v.default then - self.map:set(name, v.option, v.default) - end - end + name = name or self.map:add(self.sectiontype) + AbstractSection.create(self, name) end -- Limits scope to sections that have certain option => value pairs |