Sha256: b4a69eeba7cfb3b8363afab2626cc2d552939c5b839d44b8d97dc0383ee94898

Contents?: true

Size: 905 Bytes

Versions: 6

Compression:

Stored size: 905 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module Packwerk
  # Processes a single node in an abstract syntax tree (AST) using the provided checkers.
  class NodeProcessor
    extend T::Sig

    sig do
      params(
        reference_extractor: ReferenceExtractor,
        relative_file: String,
      ).void
    end
    def initialize(reference_extractor:, relative_file:)
      @reference_extractor = reference_extractor
      @relative_file = relative_file
    end

    sig do
      params(
        node: Parser::AST::Node,
        ancestors: T::Array[Parser::AST::Node]
      ).returns(T.nilable(UnresolvedReference))
    end
    def call(node, ancestors)
      return unless NodeHelpers.method_call?(node) || NodeHelpers.constant?(node)

      @reference_extractor.reference_from_node(node, ancestors: ancestors, relative_file: @relative_file)
    end
  end

  private_constant :NodeProcessor
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
packwerk-3.2.2 lib/packwerk/node_processor.rb
packwerk-3.2.1 lib/packwerk/node_processor.rb
packwerk-3.2.0 lib/packwerk/node_processor.rb
packwerk-3.1.0 lib/packwerk/node_processor.rb
packwerk-3.0.1 lib/packwerk/node_processor.rb
packwerk-3.0.0 lib/packwerk/node_processor.rb