summaryrefslogtreecommitdiffstats
path: root/acf2/model
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-19 22:32:41 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-20 01:24:11 +0200
commitb908a35e90d64fd50a4fb3068d472fb8fb0b1b73 (patch)
treea1b494868a36db5b33e162669419c23bd1190ded /acf2/model
parentde10682ab7404168aa6086f2f3199841fd97ea2a (diff)
downloadacf2-b908a35e90d64fd50a4fb3068d472fb8fb0b1b73.tar.bz2
acf2-b908a35e90d64fd50a4fb3068d472fb8fb0b1b73.tar.xz
model: make ipairs iteration end with nested collections
Diffstat (limited to 'acf2/model')
-rw-r--r--acf2/model/field.lua6
-rw-r--r--acf2/model/node.lua9
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