summaryrefslogtreecommitdiffstats
path: root/acf2/model
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-11 13:46:34 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-11 13:47:25 +0200
commit97703f26017aff4dcd3435fdc612719b040278c6 (patch)
treebd2c0bf27cad2b86ce045133f49acda81f088966 /acf2/model
parent28da76182154c395dbcb64f4a56bd8cfb3f51886 (diff)
downloadacf2-97703f26017aff4dcd3435fdc612719b040278c6.tar.bz2
acf2-97703f26017aff4dcd3435fdc612719b040278c6.tar.xz
model: meta requests: return metadata for reference, not target
Diffstat (limited to 'acf2/model')
-rw-r--r--acf2/model/node.lua6
-rw-r--r--acf2/model/set.lua8
2 files changed, 9 insertions, 5 deletions
diff --git a/acf2/model/node.lua b/acf2/model/node.lua
index bb37900..3347cd0 100644
--- a/acf2/model/node.lua
+++ b/acf2/model/node.lua
@@ -61,7 +61,7 @@ function M.TreeNode:init(context)
mt.__eq = equal_tns
mt._meta = {}
- function mt.get(k, create) return mt.load(k, {create=create}) end
+ function mt.get(k, options) return mt.load(k, options) end
if not mt.txn then return end
@@ -101,7 +101,9 @@ function M.TreeNode:fetch(path, create)
raise(mt.path, 'Member does not exist: '..name)
end
- local next = mt.get(name, create)
+ local options = {create=create}
+ if create and #path == 1 then options.dereference = false 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)
end
diff --git a/acf2/model/set.lua b/acf2/model/set.lua
index ac5600b..713da8b 100644
--- a/acf2/model/set.lua
+++ b/acf2/model/set.lua
@@ -9,6 +9,7 @@ local TreeNode = require('acf2.model.field').TreeNode
local node = require('acf2.model.node')
local object = require('acf2.object')
local pth = require('acf2.path')
+local setdefaults = require('acf2.util').setdefaults
M.Set = object.class(require('acf2.model.node').List)
@@ -28,10 +29,11 @@ function M.Set:init(context, params)
local mt = getmetatable(self)
mt._meta.type = 'set'
- function mt.get(k, create)
+ function mt.get(k, options)
+ options = setdefaults(options or {}, {dereference=true})
local i = find(k)
- if i then return mt.load(i, {dereference=true}) end
- if create then return k end
+ if i then return mt.load(i, options) end
+ if options.create then return k end
end
function mt.__newindex(t, k, v)