module AST::Processor::Mixin

def handler_missing(node)

Returns:
  • (AST::Node, nil) -

Parameters:
  • node (AST::Node) --
def handler_missing(node)
end

def process(node)

Returns:
  • (AST::Node, nil) -

Parameters:
  • node (AST::Node, nil) --
def process(node)
  return if node.nil?
  node = node.to_ast
  # Invoke a specific handler
  on_handler = :"on_#{node.type}"
  if respond_to? on_handler
    new_node = send on_handler, node
  else
    new_node = handler_missing(node)
  end
  node = new_node if new_node
  node
end

def process_all(nodes)

Returns:
  • (Array) -

Parameters:
  • nodes (Array) --
def process_all(nodes)
  nodes.to_a.map do |node|
    process node
  end
end