class Swarm::Expression
Public Class Methods
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/swarm/expression.rb, line 10 def inherited(subclass) super subclass.set_columns *columns end
storage_type()
click to toggle source
# File lib/swarm/expression.rb, line 6 def storage_type "Expression" end
Public Instance Methods
_apply()
click to toggle source
# File lib/swarm/expression.rb, line 54 def _apply set_milestone("applied_at") meets_conditions? ? work : reply save end
_reply()
click to toggle source
# File lib/swarm/expression.rb, line 60 def _reply set_milestone("replied_at") save reply_to_parent end
apply()
click to toggle source
# File lib/swarm/expression.rb, line 45 def apply hive.queue('apply', self) end
arguments()
click to toggle source
# File lib/swarm/expression.rb, line 87 def arguments node[1] end
branch_position()
click to toggle source
# File lib/swarm/expression.rb, line 21 def branch_position @branch_position ||= position.last end
command()
click to toggle source
# File lib/swarm/expression.rb, line 83 def command node[0] end
evaluator()
click to toggle source
# File lib/swarm/expression.rb, line 25 def evaluator @evaluator ||= Swarm::ExpressionEvaluator.new(self) end
meets_conditions?()
click to toggle source
# File lib/swarm/expression.rb, line 29 def meets_conditions? evaluator.all_conditions_met? end
node()
click to toggle source
# File lib/swarm/expression.rb, line 79 def node @node ||= parent.node_at_position(branch_position) end
node_at_position(position)
click to toggle source
# File lib/swarm/expression.rb, line 95 def node_at_position(position) tree[position] end
parent()
click to toggle source
# File lib/swarm/expression.rb, line 37 def parent if root? process else Expression.fetch(parent_id, hive: hive) end end
replied?()
click to toggle source
# File lib/swarm/expression.rb, line 74 def replied? reload! !!replied_at end
replied_at()
click to toggle source
# File lib/swarm/expression.rb, line 70 def replied_at get_milestone("replied_at") end
reply()
click to toggle source
# File lib/swarm/expression.rb, line 49 def reply save hive.queue('reply', self) end
reply_to_parent()
click to toggle source
# File lib/swarm/expression.rb, line 66 def reply_to_parent parent.move_on_from(self) end
root?()
click to toggle source
# File lib/swarm/expression.rb, line 33 def root? process_id == parent_id end
tree()
click to toggle source
# File lib/swarm/expression.rb, line 91 def tree node[2] end
Private Instance Methods
get_milestone(name)
click to toggle source
# File lib/swarm/expression.rb, line 105 def get_milestone(name) (milestones || {})[name] end
set_milestone(name, at: Time.now.to_i)
click to toggle source
# File lib/swarm/expression.rb, line 101 def set_milestone(name, at: Time.now.to_i) self.milestones = (milestones || {}).merge(name => at) end