Sha256: d7df466d89fc4933e60462b9c4273dbaf33facd625ad38a0e2739a4feb887eba

Contents?: true

Size: 833 Bytes

Versions: 26

Compression:

Stored size: 833 Bytes

Contents

module Parser

  class Diagnostic::Engine
    attr_accessor :consumer

    attr_accessor :all_errors_are_fatal
    attr_accessor :ignore_warnings

    def initialize(consumer=nil)
      @consumer             = consumer

      @all_errors_are_fatal = false
      @ignore_warnings      = false
    end

    def process(diagnostic)
      if ignore?(diagnostic)
        # do nothing
      elsif @consumer
        @consumer.call(diagnostic)
      end

      if raise?(diagnostic)
        raise Parser::SyntaxError, diagnostic.message
      end

      self
    end

    protected

    def ignore?(diagnostic)
      @ignore_warnings &&
            diagnostic.level == :warning
    end

    def raise?(diagnostic)
      (@all_errors_are_fatal &&
          diagnostic.level == :error) ||
        diagnostic.level == :fatal
    end
  end

end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
parser-2.0.0.pre1 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta10 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta9 lib/parser/diagnostic/engine.rb
parser-1.4.2 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta8 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta7 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta6 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta5 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta4 lib/parser/diagnostic/engine.rb
parser-1.4.1 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta3 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta2 lib/parser/diagnostic/engine.rb
parser-2.0.0.beta1 lib/parser/diagnostic/engine.rb
parser-1.4.0 lib/parser/diagnostic/engine.rb
parser-1.3.4 lib/parser/diagnostic/engine.rb
parser-1.3.3 lib/parser/diagnostic/engine.rb
parser-1.3.2 lib/parser/diagnostic/engine.rb
parser-1.3.1 lib/parser/diagnostic/engine.rb
parser-1.3.0 lib/parser/diagnostic/engine.rb
parser-1.2.0 lib/parser/diagnostic/engine.rb