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