From: Steven Barth Date: Wed, 16 Jul 2008 07:24:54 +0000 (+0000) Subject: libs/cbi: Cleaned up *Section.create X-Git-Tag: 0.8.0~646 X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=ced11a4a1372516894b8a2f29c159b1f03b0bfd9 libs/cbi: Cleaned up *Section.create --- 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