class Puppet::Pops::Issues::Issue
Describes an issue, and can produce a message for an occurrence of the issue.
Attributes
Names that must be bound in an occurrence of the issue to be able to produce a message. These are the names in addition to requirements stipulated by the Issue formatter contract; i.e. :label`, and `:semantic`.
If this issue can have its severity lowered to :warning, :deprecation, or :ignored
The issue code @return [Symbol]
A block producing the message @return [Proc]
Public Class Methods
Configures the Issue with required arguments (bound by occurrence), and a block producing a message.
# File lib/puppet/pops/issues.rb 27 def initialize issue_code, *args, &block 28 @issue_code = issue_code 29 @message_block = block 30 @arg_names = args 31 @demotable = true 32 end
Public Instance Methods
Returns true if it is allowed to demote this issue
# File lib/puppet/pops/issues.rb 35 def demotable? 36 @demotable 37 end
Formats a message for an occurrence of the issue with argument bindings passed in a hash. The hash must contain a LabelProvider bound to the key `label` and the semantic model element bound to the key `semantic`. All required arguments as specified by `arg_names` must be bound in the given `hash`. @api public
# File lib/puppet/pops/issues.rb 45 def format(hash ={}) 46 # Create a Message Data where all hash keys become methods for convenient interpolation 47 # in issue text. 48 msgdata = MessageData.new(*arg_names) 49 begin 50 # Evaluate the message block in the msg data's binding 51 msgdata.format(hash, &message_block) 52 rescue StandardError => e 53 raise RuntimeError, _("Error while reporting issue: %{code}. %{message}") % { code: issue_code, message: e.message }, caller 54 end 55 end