Class: Swarm::Expression
Instance Attribute Summary
Attributes inherited from HiveDweller
#hive, #id
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from HiveDweller
#==, all, #attributes, #change_attribute, #changed?, create, define_getter, define_setter, #delete, each, fetch, ids, #initialize, many_to_one, #new?, new_from_storage, one_to_many, reify_from_hash, #reload!, #save, #set_attributes, set_columns, #storage, #storage_id, storage_id_for_key, #to_hash
Class Method Details
.inherited(subclass) ⇒ Object
12
13
14
15
|
# File 'lib/swarm/expression.rb', line 12
def inherited(subclass)
super
subclass.set_columns(*columns)
end
|
.storage_type ⇒ Object
8
9
10
|
# File 'lib/swarm/expression.rb', line 8
def storage_type
"Expression"
end
|
Instance Method Details
#_apply ⇒ Object
56
57
58
59
60
|
# File 'lib/swarm/expression.rb', line 56
def _apply
set_milestone("applied_at")
meets_conditions? ? work : reply
save
end
|
#_reply ⇒ Object
62
63
64
65
66
|
# File 'lib/swarm/expression.rb', line 62
def _reply
set_milestone("replied_at")
save
reply_to_parent
end
|
#apply ⇒ Object
47
48
49
|
# File 'lib/swarm/expression.rb', line 47
def apply
hive.queue('apply', self)
end
|
#arguments ⇒ Object
89
90
91
|
# File 'lib/swarm/expression.rb', line 89
def arguments
node[1]
end
|
#branch_position ⇒ Object
23
24
25
|
# File 'lib/swarm/expression.rb', line 23
def branch_position
@branch_position ||= position.last
end
|
#command ⇒ Object
85
86
87
|
# File 'lib/swarm/expression.rb', line 85
def command
node[0]
end
|
#meets_conditions? ⇒ Boolean
31
32
33
|
# File 'lib/swarm/expression.rb', line 31
def meets_conditions?
evaluator.all_conditions_met?
end
|
#node ⇒ Object
81
82
83
|
# File 'lib/swarm/expression.rb', line 81
def node
@node ||= parent.node_at_position(branch_position)
end
|
#node_at_position(position) ⇒ Object
97
98
99
|
# File 'lib/swarm/expression.rb', line 97
def node_at_position(position)
tree[position]
end
|
#parent ⇒ Object
39
40
41
42
43
44
45
|
# File 'lib/swarm/expression.rb', line 39
def parent
if root?
process
else
Expression.fetch(parent_id, hive: hive)
end
end
|
#replied? ⇒ Boolean
76
77
78
79
|
# File 'lib/swarm/expression.rb', line 76
def replied?
reload!
!!replied_at
end
|
#replied_at ⇒ Object
72
73
74
|
# File 'lib/swarm/expression.rb', line 72
def replied_at
get_milestone("replied_at")
end
|
#reply ⇒ Object
51
52
53
54
|
# File 'lib/swarm/expression.rb', line 51
def reply
save
hive.queue('reply', self)
end
|
#reply_to_parent ⇒ Object
68
69
70
|
# File 'lib/swarm/expression.rb', line 68
def reply_to_parent
parent.move_on_from(self)
end
|
#root? ⇒ Boolean
35
36
37
|
# File 'lib/swarm/expression.rb', line 35
def root?
process_id == parent_id
end
|
#tree ⇒ Object
93
94
95
|
# File 'lib/swarm/expression.rb', line 93
def tree
node[2]
end
|