11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/tinkit_node_factory.rb', line 11
def self.make(node_env)
TinkitLog.log_raise "No Node Environment provided" unless node_env
TinkitLog.log_raise "Empty Node Environment provided" if node_env.empty?
TinkitLog.log_raise "Malformed Node Environment" unless node_env.respond_to?(:keys)
TinkitLog.log_raise "Malformed Node Environment" unless node_env.keys.include? :persist_model
neo_env = node_env[:data_model] || {}
neo = NodeElementOperations.new(neo_env)
data_model_bindings = {:key_fields => neo.key_fields,
:views => neo.views}
class_environment = node_env[:persist_model]
user_doc_class_name = node_env[:node_class_id]
dyn_user_class_def = "class #{user_doc_class_name} < TinkitBaseNode
class << self; attr_accessor :user_attachClass, end
end"
TinkitNodeFactory.class_eval(dyn_user_class_def)
docClass = TinkitNodeFactory.const_get(user_doc_class_name)
docClass.data_struc = neo
docClass.set_environment(class_environment, data_model_bindings)
docClass
end
|