Class: Spoom::Sorbet::Errors::Parser
- Inherits:
-
Object
- Object
- Spoom::Sorbet::Errors::Parser
- Extended by:
- T::Sig
- Defined in:
- lib/spoom/sorbet/errors.rb
Overview
Parse errors from Sorbet output
Constant Summary collapse
- HEADER =
[ "👋 Hey there! Heads up that this is not a release build of sorbet.", "Release builds are faster and more well-supported by the Sorbet team.", "Check out the README to learn how to build Sorbet in release mode.", "To forcibly silence this error, either pass --silence-dev-message,", "or set SORBET_SILENCE_DEV_MESSAGE=1 in your shell environment.", ]
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(error_url_base: DEFAULT_ERROR_URL_BASE) ⇒ Parser
constructor
A new instance of Parser.
- #parse(output) ⇒ Object
Constructor Details
#initialize(error_url_base: DEFAULT_ERROR_URL_BASE) ⇒ Parser
Returns a new instance of Parser.
30 31 32 33 34 |
# File 'lib/spoom/sorbet/errors.rb', line 30 def initialize(error_url_base: DEFAULT_ERROR_URL_BASE) @errors = [] @error_line_match_regex = error_line_match_regexp(error_url_base) @current_error = nil end |
Class Method Details
Instance Method Details
#parse(output) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/spoom/sorbet/errors.rb', line 37 def parse(output) output.each_line do |line| break if /^No errors! Great job\./.match?(line) break if /^Errors: /.match?(line) next if HEADER.include?(line.strip) next if line == "\n" if (error = match_error_line(line)) close_error if @current_error open_error(error) next end append_error(line) if @current_error end close_error if @current_error @errors end |