summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-21 11:18:32 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-21 12:40:21 +0200
commit7aa2c8e1200a2a57a3ba064f117d66a47224efff (patch)
treeca0092bf7f5db7ba8dc64d78f8c2c1296c6d0bce
parent25196869b6ecb19a35a0cb42f966dec71e7e2665 (diff)
downloadaconf-7aa2c8e1200a2a57a3ba064f117d66a47224efff.tar.bz2
aconf-7aa2c8e1200a2a57a3ba064f117d66a47224efff.tar.xz
model: make TreeNode.fetch work properly with absolute paths
-rw-r--r--acf2/model/node.lua11
1 files changed, 9 insertions, 2 deletions
diff --git a/acf2/model/node.lua b/acf2/model/node.lua
index e4b843b..2d9aa98 100644
--- a/acf2/model/node.lua
+++ b/acf2/model/node.lua
@@ -115,11 +115,18 @@ function M.TreeNode:init(context, dtype)
end
function M.TreeNode:fetch(path, create)
- if type(path) == 'string' then path = pth.split(path) end
+ local mt = getmetatable(self)
+
+ if type(path) == 'string' then
+ if pth.is_absolute(path) and mt.path > '/' then
+ assert(not create)
+ return mt.txn:fetch(path)
+ end
+ path = pth.split(path)
+ end
if #path == 0 then return self end
- local mt = getmetatable(self)
local name = path[1]
if not mt.member(name) then
raise(mt.path, 'Member does not exist: '..name)