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