diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-19 22:32:41 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-20 01:24:11 +0200 |
commit | b908a35e90d64fd50a4fb3068d472fb8fb0b1b73 (patch) | |
tree | a1b494868a36db5b33e162669419c23bd1190ded /acf2/model | |
parent | de10682ab7404168aa6086f2f3199841fd97ea2a (diff) | |
download | aconf-b908a35e90d64fd50a4fb3068d472fb8fb0b1b73.tar.bz2 aconf-b908a35e90d64fd50a4fb3068d472fb8fb0b1b73.tar.xz |
model: make ipairs iteration end with nested collections
Diffstat (limited to 'acf2/model')
-rw-r--r-- | acf2/model/field.lua | 6 | ||||
-rw-r--r-- | acf2/model/node.lua | 9 |
2 files changed, 9 insertions, 6 deletions
diff --git a/acf2/model/field.lua b/acf2/model/field.lua index 4307f6f..309249e 100644 --- a/acf2/model/field.lua +++ b/acf2/model/field.lua @@ -271,9 +271,9 @@ end function M.TreeNode:load(context, options) if context.txn and not ( - ( - options and options.create - ) or self.create or self:_load(context) + util.setdefault( + options or {}, 'create', self.create + ) or self:_load(context) ) then return end return self.itype(context, self.iparams) end diff --git a/acf2/model/node.lua b/acf2/model/node.lua index d0d44cd..85a857d 100644 --- a/acf2/model/node.lua +++ b/acf2/model/node.lua @@ -125,8 +125,11 @@ function M.TreeNode:fetch(path, create) raise(mt.path, 'Member does not exist: '..name) end - local options = {create=create} - if create and #path == 1 then options.dereference = false end + local options = {} + if create then + options.create = true + if #path == 1 then options.dereference = false end + end local next = mt.get(name, options) if next == nil and (not create or #path > 1) then raise(mt.path, 'Subordinate does not exist: '..name) @@ -332,7 +335,7 @@ end local function _ipairs(mt, i) i = i + 1 - local v = mt.load(i) + local v = mt.load(i, {create=false}) if v == nil then return end return i, v end |