diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-21 11:18:32 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-21 12:40:21 +0200 |
commit | 7aa2c8e1200a2a57a3ba064f117d66a47224efff (patch) | |
tree | ca0092bf7f5db7ba8dc64d78f8c2c1296c6d0bce | |
parent | 25196869b6ecb19a35a0cb42f966dec71e7e2665 (diff) | |
download | aconf-7aa2c8e1200a2a57a3ba064f117d66a47224efff.tar.bz2 aconf-7aa2c8e1200a2a57a3ba064f117d66a47224efff.tar.xz |
model: make TreeNode.fetch work properly with absolute paths
-rw-r--r-- | acf2/model/node.lua | 11 |
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) |