Class: Puppet::Pops::Validation::DiagnosticFormatter Private

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

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Formats a diagnostic for output. Produces a diagnostic output typical for a compiler (suitable for interpretation by tools) The format is: ‘file:line:pos: Message`, where pos, line and file are included if available.

API:

  • private

Direct Known Subclasses

DiagnosticFormatterPuppetStyle

Instance Method Summary collapse

Instance Method Details

#format(diagnostic) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



274
275
276
# File 'lib/puppet/pops/validation.rb', line 274

def format diagnostic
  "#{format_location(diagnostic)} #{format_severity(diagnostic)}#{format_message(diagnostic)}"
end

#format_location(diagnostic) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
# File 'lib/puppet/pops/validation.rb', line 291

def format_location diagnostic
  file = diagnostic.file
  file = (file.is_a?(String) && file.empty?) ? nil : file
  line = pos = nil
  if diagnostic.source_pos
    line = diagnostic.source_pos.line
    pos = diagnostic.source_pos.pos
  end
  if file && line && pos
    "#{file}:#{line}:#{pos}:"
  elsif file && line
    "#{file}:#{line}:"
  elsif file
    "#{file}:"
  else
    ""
  end
end

#format_message(diagnostic) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



278
279
280
# File 'lib/puppet/pops/validation.rb', line 278

def format_message diagnostic
  diagnostic.issue.format(diagnostic.arguments)
end

#format_severity(diagnostic) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Note:

Note that it is not a good idea to use Puppet.deprecation_warning as it is for internal deprecation.

This produces “Deprecation notice: ” prefix if the diagnostic has :deprecation severity, otherwise “”. The idea is that all other diagnostics are emitted with the methods Puppet.err (or an exception), and Puppet.warning.

API:

  • private



287
288
289
# File 'lib/puppet/pops/validation.rb', line 287

def format_severity diagnostic
  diagnostic.severity == :deprecation ? "Deprecation notice: " : ""
end