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.

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.



272
273
274
# File 'lib/puppet/pops/validation.rb', line 272

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.



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

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.



276
277
278
# File 'lib/puppet/pops/validation.rb', line 276

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.



285
286
287
# File 'lib/puppet/pops/validation.rb', line 285

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