summaryrefslogtreecommitdiffhomepage
path: root/libs
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-07-16 07:24:54 +0000
committerSteven Barth <steven@midlink.org>2008-07-16 07:24:54 +0000
commitced11a4a1372516894b8a2f29c159b1f03b0bfd9 (patch)
tree8cf42a464fa0a3425be0cf9cb5249e727c38be46 /libs
parent52a063cc5c9509ed95c618086a5aacde90af447c (diff)
libs/cbi: Cleaned up *Section.create
Diffstat (limited to 'libs')
-rw-r--r--libs/cbi/luasrc/cbi.lua30
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