Class: Parser::Diagnostic::Engine
- Inherits:
-
Object
- Object
- Parser::Diagnostic::Engine
- Defined in:
- lib/parser/diagnostic/engine.rb
Overview
Engine provides a basic API for dealing with diagnostics by delegating them to registered consumers.
Instance Attribute Summary collapse
-
#all_errors_are_fatal ⇒ Boolean
When set to
true
any error that is encountered will result in SyntaxError being raised. - #consumer ⇒ #call(Diagnostic)
-
#ignore_warnings ⇒ Boolean
When set to
true
warnings will be ignored.
Instance Method Summary collapse
-
#initialize(consumer = nil) ⇒ Engine
constructor
A new instance of Engine.
-
#process(diagnostic) ⇒ Parser::Diagnostic::Engine
Processes a
diagnostic
: * Passes the diagnostic to the consumer, if it's not a warning whenignore_warnings
is set.
Constructor Details
#initialize(consumer = nil) ⇒ Engine
Returns a new instance of Engine.
44 45 46 47 48 49 |
# File 'lib/parser/diagnostic/engine.rb', line 44 def initialize(consumer=nil) @consumer = consumer @all_errors_are_fatal = false @ignore_warnings = false end |
Instance Attribute Details
#all_errors_are_fatal ⇒ Boolean
When set to true
any error that is encountered will result in
SyntaxError being raised.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/parser/diagnostic/engine.rb', line 35 class Diagnostic::Engine attr_accessor :consumer attr_accessor :all_errors_are_fatal attr_accessor :ignore_warnings ## # @param [#call(Diagnostic)] consumer # def initialize(consumer=nil) @consumer = consumer @all_errors_are_fatal = false @ignore_warnings = false end ## # 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? # def process(diagnostic) if ignore?(diagnostic) # do nothing elsif @consumer @consumer.call(diagnostic) end if raise?(diagnostic) raise Parser::SyntaxError, diagnostic end self end protected ## # Checks whether `diagnostic` should be ignored. # # @param [Parser::Diagnostic] diagnostic # @return [Boolean] # def ignore?(diagnostic) @ignore_warnings && diagnostic.level == :warning end ## # Checks whether `diagnostic` should be raised as an exception. # # @param [Parser::Diagnostic] diagnostic # @return [Boolean] # def raise?(diagnostic) (@all_errors_are_fatal && diagnostic.level == :error) || diagnostic.level == :fatal end end |
#consumer ⇒ #call(Diagnostic)
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/parser/diagnostic/engine.rb', line 35 class Diagnostic::Engine attr_accessor :consumer attr_accessor :all_errors_are_fatal attr_accessor :ignore_warnings ## # @param [#call(Diagnostic)] consumer # def initialize(consumer=nil) @consumer = consumer @all_errors_are_fatal = false @ignore_warnings = false end ## # 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? # def process(diagnostic) if ignore?(diagnostic) # do nothing elsif @consumer @consumer.call(diagnostic) end if raise?(diagnostic) raise Parser::SyntaxError, diagnostic end self end protected ## # Checks whether `diagnostic` should be ignored. # # @param [Parser::Diagnostic] diagnostic # @return [Boolean] # def ignore?(diagnostic) @ignore_warnings && diagnostic.level == :warning end ## # Checks whether `diagnostic` should be raised as an exception. # # @param [Parser::Diagnostic] diagnostic # @return [Boolean] # def raise?(diagnostic) (@all_errors_are_fatal && diagnostic.level == :error) || diagnostic.level == :fatal end end |
#ignore_warnings ⇒ Boolean
When set to true
warnings will be ignored.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/parser/diagnostic/engine.rb', line 35 class Diagnostic::Engine attr_accessor :consumer attr_accessor :all_errors_are_fatal attr_accessor :ignore_warnings ## # @param [#call(Diagnostic)] consumer # def initialize(consumer=nil) @consumer = consumer @all_errors_are_fatal = false @ignore_warnings = false end ## # 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? # def process(diagnostic) if ignore?(diagnostic) # do nothing elsif @consumer @consumer.call(diagnostic) end if raise?(diagnostic) raise Parser::SyntaxError, diagnostic end self end protected ## # Checks whether `diagnostic` should be ignored. # # @param [Parser::Diagnostic] diagnostic # @return [Boolean] # def ignore?(diagnostic) @ignore_warnings && diagnostic.level == :warning end ## # Checks whether `diagnostic` should be raised as an exception. # # @param [Parser::Diagnostic] diagnostic # @return [Boolean] # def raise?(diagnostic) (@all_errors_are_fatal && diagnostic.level == :error) || diagnostic.level == :fatal end end |
Instance Method Details
#process(diagnostic) ⇒ Parser::Diagnostic::Engine
Processes a diagnostic
:
- Passes the diagnostic to the consumer, if it's not a warning when
ignore_warnings
is set. - After that, raises SyntaxError when
all_errors_are_fatal
is set to true.
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/parser/diagnostic/engine.rb', line 63 def process(diagnostic) if ignore?(diagnostic) # do nothing elsif @consumer @consumer.call(diagnostic) end if raise?(diagnostic) raise Parser::SyntaxError, diagnostic end self end |