Class: Puppet::Pops::Validation::Acceptor

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/pops/validation.rb

Overview

An acceptor of diagnostics. An acceptor of diagnostics is given each issue as they are found by a diagnostician/validator. An acceptor can collect all found issues, or decide to collect a few and then report, or give up as the first issue if found. This default implementation collects all diagnostics in the order they are produced, and can then answer questions about what was diagnosed.

API:

  • public

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAcceptor

Initializes this diagnostics acceptor. By default, the acceptor is configured with a default severity producer. TODO add semantic_label_provider

Parameters:

  • the severity producer to use to determine severity of an issue

API:

  • public



360
361
362
363
364
# File 'lib/puppet/pops/validation.rb', line 360

def initialize()
  @diagnostics = []
  @error_count = 0
  @warning_count = 0
end

Instance Attribute Details

#diagnosticsObject (readonly)

All diagnostic in the order they were issued

API:

  • public



347
348
349
# File 'lib/puppet/pops/validation.rb', line 347

def diagnostics
  @diagnostics
end

#error_countObject (readonly)

The number of :error severity issues

API:

  • public



353
354
355
# File 'lib/puppet/pops/validation.rb', line 353

def error_count
  @error_count
end

#warning_countObject (readonly)

The number of :warning severity issues + number of :deprecation severity issues

API:

  • public



350
351
352
# File 'lib/puppet/pops/validation.rb', line 350

def warning_count
  @warning_count
end

Instance Method Details

#accept(diagnostic) ⇒ Object

Add a diagnostic, or all diagnostics from another acceptor to the set of diagnostics

Parameters:

  • diagnostic(s) that should be accepted

API:

  • public



403
404
405
406
407
408
409
# File 'lib/puppet/pops/validation.rb', line 403

def accept(diagnostic)
  if diagnostic.is_a?(Acceptor)
    diagnostic.diagnostics.each {|d| self.send(d.severity, d)}
  else
    self.send(diagnostic.severity, diagnostic)
  end
end

#errorsObject

Returns the diagnosed errors in the order thwy were reported.

API:

  • public



382
383
384
# File 'lib/puppet/pops/validation.rb', line 382

def errors
  @diagnostics.select {|d| d.severity == :error }
end

#errors?Boolean

Returns true when errors have been diagnosed.

Returns:

API:

  • public



367
368
369
# File 'lib/puppet/pops/validation.rb', line 367

def errors?
  @error_count > 0
end

#errors_and_warningsObject

API:

  • public



392
393
394
# File 'lib/puppet/pops/validation.rb', line 392

def errors_and_warnings
  @diagnostics.select {|d| d.severity != :ignore }
end

#errors_or_warnings?Boolean

Returns true when errors and/or warnings have been diagnosed.

Returns:

API:

  • public



377
378
379
# File 'lib/puppet/pops/validation.rb', line 377

def errors_or_warnings?
  errors? || warnings?
end

#ignoredObject

Returns the ignored diagnostics in the order thwy were reported (if reported at all)

API:

  • public



397
398
399
# File 'lib/puppet/pops/validation.rb', line 397

def ignored
  @diagnostics.select {|d| d.severity == :ignore }
end

#prune(&block) ⇒ Array<Puppet::Pops::Validation::Diagnostic, nil] the removed set of diagnostics or nil if nothing was removed

Prunes the contain diagnostics by removing those for which the given block returns true. The internal statistics is updated as a consequence of removing.

Returns:

  • Array<Puppet::Pops::Validation::Diagnostic, nil] the removed set of diagnostics or nil if nothing was removed

API:

  • public



415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
# File 'lib/puppet/pops/validation.rb', line 415

def prune(&block)
  removed = []
  @diagnostics.delete_if do |d|
    if should_remove = yield(d)
      removed << d
    end
    should_remove
  end
  removed.each do |d|
    case d.severity
    when :error
      @error_count -= 1
    when :warning
      @warning_count -= 1
    # there is not ignore_count
    end
  end
  removed.empty? ? nil : removed
end

#warningsObject

Returns the diagnosed warnings in the order thwy were reported. (This includes :warning and :deprecation severity)

API:

  • public



388
389
390
# File 'lib/puppet/pops/validation.rb', line 388

def warnings
  @diagnostics.select {|d| d.severity == :warning || d.severity == :deprecation }
end

#warnings?Boolean

Returns true when warnings have been diagnosed.

Returns:

API:

  • public



372
373
374
# File 'lib/puppet/pops/validation.rb', line 372

def warnings?
  @warning_count > 0
end