diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-10-08 18:50:56 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-10-08 18:50:56 +0300 |
commit | 33728ad3382d74281412d4556561d479bb88832b (patch) | |
tree | e8a9b2798dec96d820715f729989e91f9e7d5e12 /acf/model/root.lua | |
parent | 3e48dd63e8bdf0c2641cfb73e6b20bea8c466ff8 (diff) | |
download | aconf-0.1.0.tar.bz2 aconf-0.1.0.tar.xz |
changed module paths from acf to acf2v0.1.0
Diffstat (limited to 'acf/model/root.lua')
-rw-r--r-- | acf/model/root.lua | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/acf/model/root.lua b/acf/model/root.lua deleted file mode 100644 index 17c5cfb..0000000 --- a/acf/model/root.lua +++ /dev/null @@ -1,91 +0,0 @@ ---[[ -Copyright (c) 2012-2013 Kaarle Ritvanen -See LICENSE file for license details ---]] - -local M = {} - -local model = require('acf.model.model') -local node = require('acf.model.node') -local object = require('acf.object') -local pth = require('acf.path') - -local util = require('acf.util') -local setdefault = util.setdefault - - -M.RootModel = model.new() - -function M.RootModel:init(txn) - object.super(self, M.RootModel):init{txn=txn, path='/', addr='/null/root'} -end - -function M.RootModel:has_permission(user, permission) - return permission == 'read' -end - -function M.RootModel:meta(path) - local obj = self:fetch(path, true) - if object.isinstance(obj, node.TreeNode) then return node.meta(obj) end - return node.mmeta(self:fetch(pth.parent(path), true), pth.name(path)) -end - - -local _topology = {} -local order = 0 - -function M.topology(addr, create) - local top = _topology - if type(addr) == 'table' then addr = util.copy(addr) - else addr = pth.split(addr) end - - local function defaults(top) - return util.setdefaults(top, {members={}, paths={}, referrers={}}) - end - - while #addr > 0 do - if create then - top = setdefault(defaults(top).members, addr[1], {}) - else - top = top.members[addr[1]] or top.members[pth.wildcard] - if not top then return end - end - table.remove(addr, 1) - end - - return defaults(top) -end - -function M.register(name, field, params) - if not params then params = {} end - params.create = true - M.RootModel[name] = model.to_field(field, params) - - local root = M.RootModel() - - for _, record in ipairs(node.topology(root:fetch(name))) do - local top = M.topology(record.addr, true) - - setdefault(top, 'order', order) - order = order + 1 - - local function set(k, v) - setdefault(top, k, v) - assert(top[k] == v) - end - - set('type', record.type) - table.insert(top.paths, record.path) - - if record.scope then - local scope = node.addr( - root:fetch(pth.to_absolute(record.scope, pth.parent(record.path))) - ) - set('scope', scope) - table.insert(M.topology(scope, true).referrers, record.path) - end - end -end - - -return M |