class Packwerk::FileProcessor

Public Class Methods

new(node_processor_factory:, parser_factory: nil) click to toggle source
# File lib/packwerk/file_processor.rb, line 14
def initialize(node_processor_factory:, parser_factory: nil)
  @node_processor_factory = node_processor_factory
  @parser_factory = parser_factory || Packwerk::Parsers::Factory.instance
end

Public Instance Methods

call(file_path) click to toggle source
# File lib/packwerk/file_processor.rb, line 19
def call(file_path)
  parser = @parser_factory.for_path(file_path)
  return [UnknownFileTypeResult.new(file: file_path)] if parser.nil?

  node = File.open(file_path, "r", external_encoding: Encoding::UTF_8) do |file|
    parser.call(io: file, file_path: file_path)
  rescue Parsers::ParseError => e
    return [e.result]
  end

  result = []
  if node
    node_processor = @node_processor_factory.for(filename: file_path, node: node)
    node_visitor = Packwerk::NodeVisitor.new(node_processor: node_processor)

    node_visitor.visit(node, ancestors: [], result: result)
  end
  result
end