module Solargraph::Parser::NodeProcessor

The processor classes used by SourceMap::Mapper to generate pins from parser nodes.

Public Class Methods

process(node, region = Region.new, pins = [], locals = []) click to toggle source

@param node [Parser::AST::Node] @param region [Region] @param pins [Array<Pin::Base>] @return [Array(Array<Pin::Base>, Array<Pin::Base>)]

# File lib/solargraph/parser/node_processor.rb, line 27
def self.process node, region = Region.new, pins = [], locals = []
  if pins.empty?
    pins.push Pin::Namespace.new(
      location: region.source.location,
      name: ''
    )
  end
  return [pins, locals] unless Parser.is_ast_node?(node)
  klass = @@processors[node.type] || NodeProcessor::Base
  processor = klass.new(node, region, pins, locals)
  processor.process
  [processor.pins, processor.locals]
end
register(type, cls) click to toggle source

Register a processor for a node type.

@param type [Symbol] @param cls [Class<NodeProcessor::Base>] @return [Class<NodeProcessor::Base>]

# File lib/solargraph/parser/node_processor.rb, line 18
def register type, cls
  @@processors[type] = cls
end