Sha256: 9fb74148a31e88ca41442527600b618fdafaf37c0ef83bb280db19e5f247e57d
Contents?: true
Size: 1.17 KB
Versions: 5
Compression:
Stored size: 1.17 KB
Contents
# typed: true # frozen_string_literal: true require "parser" require "parser/current" module Packwerk module Parsers class Ruby include ParserInterface class RaiseExceptionsParser < Parser::CurrentRuby def initialize(builder) super(builder) super.diagnostics.all_errors_are_fatal = true end end class TolerateInvalidUtf8Builder < Parser::Builders::Default def string_value(token) value(token) end end def initialize(parser_class: RaiseExceptionsParser) @builder = TolerateInvalidUtf8Builder.new @parser_class = parser_class end 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 end end end
Version data entries
5 entries across 5 versions & 1 rubygems