class Swarm::BranchExpression

Public Instance Methods

add_and_apply_child(at_position) click to toggle source
# File lib/swarm/expressions/branch_expression.rb, line 14
def add_and_apply_child(at_position)
  new_child = add_child(at_position)
  new_child.apply
end
add_child(at_position) click to toggle source
# File lib/swarm/expressions/branch_expression.rb, line 19
def add_child(at_position)
  node = tree[at_position]
  raise InvalidPositionError unless node
  expression = create_child_expression(node: node, at_position: at_position)
  (self.children_ids ||= []) << expression.id
  expression
end
create_child_expression(node:, at_position:) click to toggle source
# File lib/swarm/expressions/branch_expression.rb, line 27
def create_child_expression(node:, at_position:)
  klass = Router.expression_class_for_node(node)
  expression = klass.create(
    :hive => hive,
    :parent_id => id,
    :position => position + [at_position],
    :workitem => workitem,
    :process_id => process_id
  )
end
kick_off_children(at_positions) click to toggle source
# File lib/swarm/expressions/branch_expression.rb, line 7
def kick_off_children(at_positions)
  at_positions.each do |at_position|
    add_and_apply_child(at_position)
  end
  save
end