diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-06-27 15:10:29 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-06-28 13:24:36 +0300 |
commit | e6ed4efcbd9b87641e471d0879ab8ff70867f544 (patch) | |
tree | f9161d7d33940d2a8334a1bb788e5136912aa024 /acf/model/field.lua | |
parent | a68e8d3ed61c991b5b5af1de3a19d74c3ed21d74 (diff) | |
download | aconf-e6ed4efcbd9b87641e471d0879ab8ff70867f544.tar.bz2 aconf-e6ed4efcbd9b87641e471d0879ab8ff70867f544.tar.xz |
collect topological information on models
Diffstat (limited to 'acf/model/field.lua')
-rw-r--r-- | acf/model/field.lua | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/acf/model/field.lua b/acf/model/field.lua index 1c903b0..beb6b28 100644 --- a/acf/model/field.lua +++ b/acf/model/field.lua @@ -14,7 +14,7 @@ local object = require('acf.object') local class = object.class local super = object.super -local map = require('acf.util').map +local util = require('acf.util') local function contains(list, value) @@ -52,7 +52,7 @@ function Field:init(params) super(self, Field):init(params) if self.choice and not self['ui-choice'] then - self['ui-choice'] = map( + self['ui-choice'] = util.map( function(name) return self:auto_ui_name(name) end, self.choice ) @@ -79,6 +79,10 @@ end function Field:btype(context) return self.dtype end +function Field:topology(context) + return {{path=context.path, addr=context.addr}} +end + function Field:load(context) local value = context.txn:get(context.addr, self:btype(context)) if value == nil then return self.default end @@ -172,6 +176,12 @@ end TreeNode = class(Field) +function TreeNode:topology(context) + local res = super(self, TreeNode):topology(context) + util.extend(res, node.topology(self:load(context, true))) + return res +end + function TreeNode:load(context, create) if not ( create or self.create or context.txn:get(context.addr, 'table') |