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 28 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 19 def register type, cls @@processors[type] = cls end