class Packwerk::Parsers::Ruby

Public Class Methods

new(parser_class: RaiseExceptionsParser) click to toggle source
# File lib/packwerk/parsers/ruby.rb, line 23
def initialize(parser_class: RaiseExceptionsParser)
  @builder = TolerateInvalidUtf8Builder.new
  @parser_class = parser_class
end

Public Instance Methods

call(io:, file_path: "<unknown>") click to toggle source
# File lib/packwerk/parsers/ruby.rb, line 28
def call(io:, file_path: "<unknown>")
  buffer = Parser::Source::Buffer.new(file_path)
  buffer.source = io.read
  parser = @parser_class.new(@builder)
  parser.parse(buffer)
rescue EncodingError => e
  result = ParseResult.new(file: file_path, message: e.message)
  raise Parsers::ParseError, result
rescue Parser::SyntaxError => e
  result = ParseResult.new(file: file_path, message: "Syntax error: #{e}")
  raise Parsers::ParseError, result
end