class Packwerk::NodeProcessor

Public Class Methods

new(reference_extractor:, filename:, checkers:) click to toggle source
# File lib/packwerk/node_processor.rb, line 15
def initialize(reference_extractor:, filename:, checkers:)
  @reference_extractor = reference_extractor
  @filename = filename
  @checkers = checkers
end

Public Instance Methods

call(node, ancestors) click to toggle source
# File lib/packwerk/node_processor.rb, line 22
def call(node, ancestors)
  return [] unless Node.method_call?(node) || Node.constant?(node)
  reference = @reference_extractor.reference_from_node(node, ancestors: ancestors, file_path: @filename)
  check_reference(reference, node)
end

Private Instance Methods

check_reference(reference, node) click to toggle source
# File lib/packwerk/node_processor.rb, line 30
def check_reference(reference, node)
  return [] unless reference
  @checkers.each_with_object([]) do |checker, violations|
    next unless checker.invalid_reference?(reference)
    offense = Packwerk::ReferenceOffense.new(
      location: Node.location(node),
      reference: reference,
      violation_type: checker.violation_type
    )
    violations << offense
  end
end