From ced11a4a1372516894b8a2f29c159b1f03b0bfd9 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Wed, 16 Jul 2008 07:24:54 +0000 Subject: [PATCH] libs/cbi: Cleaned up *Section.create --- libs/cbi/luasrc/cbi.lua | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 6123e273b6..879717acfd 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 -- 2.30.2