Class Parser::Diagnostic::Engine
In: lib/parser/diagnostic/engine.rb
Parent: Object

{Parser::Diagnostic::Engine} provides a basic API for dealing with diagnostics by delegating them to registered consumers.

@example

 buffer      = Parser::Source::Buffer.new(__FILE__)
 buffer.code = 'foobar'

 consumer = lambda do |diagnostic|
   puts diagnostic.message
 end

 engine     = Parser::Diagnostic::Engine.new(consumer)
 diagnostic = Parser::Diagnostic.new(
     :warning, :unexpected_token, { :token => 'abc' }, buffer, 1..2)

 engine.process(diagnostic) # => "unexpected token abc"

@api public

@!attribute [rw] consumer

 @return [#call(Diagnostic)]

@!attribute [rw] all_errors_are_fatal

 When set to `true` any error that is encountered will result in
 {Parser::SyntaxError} being raised.
 @return [Boolean]

@!attribute [rw] ignore_warnings

 When set to `true` warnings will be ignored.
 @return [Boolean]

Methods

ignore?   new   process   raise?  

Attributes

all_errors_are_fatal  [RW] 
consumer  [RW] 
ignore_warnings  [RW] 

Public Class methods

@param [call(Diagnostic)] consumer

Public Instance methods

Processes a `diagnostic`:

  * Passes the diagnostic to the consumer, if it's not a warning when
    `ignore_warnings` is set.
  * After that, raises {Parser::SyntaxError} when `all_errors_are_fatal`
    is set to true.

@param [Parser::Diagnostic] diagnostic @return [Parser::Diagnostic::Engine] @see ignore? @see raise?

Protected Instance methods

Checks whether `diagnostic` should be ignored.

@param [Parser::Diagnostic] diagnostic @return [Boolean]

Checks whether `diagnostic` should be raised as an exception.

@param [Parser::Diagnostic] diagnostic @return [Boolean]

[Validate]