class Flor::Pro::Graft

Public Instance Methods

pre_execute() click to toggle source
# File lib/flor/punit/graft.rb, line 45
def pre_execute

  @node['execute_message'] = Flor.dup(@message)
  @node['atts'] = []
end
receive_last() click to toggle source
# File lib/flor/punit/graft.rb, line 51
def receive_last

  # look up subtree

  sub =
    att('tree', 'subtree', 'flow', 'subflow', 'twig', nil)
  source_path, source =
    @executor.unit.loader.library(domain, sub, subflows: true)

  fail Flor::FlorError.new(
    "no subtree #{sub.inspect} found (domain #{domain.inspect})", self
  ) unless source

  tree = Flor.parse(source, source_path, {})

  # graft subtree into parent node

  if parent_tree = lookup_tree(parent)
    parent_tree[1][child_id] = tree
  end

  # re-apply self with subtree

  m = @node['execute_message']
  m['tree'] = tree

  [ m ]
end