Class: Puppet::Pops::Lookup::ExplainMerge Private

Inherits:
ExplainTreeNode show all
Defined in:
lib/puppet/pops/lookup/explainer.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.

API:

  • private

Instance Attribute Summary

Attributes inherited from ExplainTreeNode

#event, #key, #parent, #value

Instance Method Summary collapse

Methods inherited from ExplainTreeNode

#dump_outcome, #dump_value, #found, #found_in_defaults, #found_in_overrides, #increase_indent, #location_not_found, #not_found, #result, #to_s

Methods inherited from ExplainNode

#branches, #dump_texts, #explain, #inspect, #text, #to_s

Constructor Details

#initialize(parent, merge) ⇒ ExplainMerge

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.

Returns a new instance of ExplainMerge.

API:

  • private



264
265
266
267
# File 'lib/puppet/pops/lookup/explainer.rb', line 264

def initialize(parent, merge)
  super(parent)
  @merge = merge
end

Instance Method Details

#dump_on(io, indent, first_indent) ⇒ 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



269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
# File 'lib/puppet/pops/lookup/explainer.rb', line 269

def dump_on(io, indent, first_indent)
  return if branches.size == 0

  # It's pointless to report a merge where there's only one branch
  return branches[0].dump_on(io, indent, first_indent) if branches.size == 1

  io << first_indent << 'Merge strategy ' << @merge.class.key.to_s << "\n"
  indent = increase_indent(indent)
  options = options_wo_strategy
  unless options.nil?
    io << indent << 'Options: '
    dump_value(io, indent, options)
    io << "\n"
  end
  branches.each { |b| b.dump_on(io, indent, indent) }
  if @event == :result
    io << indent << 'Merged result: '
    dump_value(io, indent, @value)
    io << "\n"
  end
end

#options_wo_strategyObject

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



305
306
307
308
309
310
311
312
# File 'lib/puppet/pops/lookup/explainer.rb', line 305

def options_wo_strategy
  options = @merge.options
  if !options.nil? && options.include?('strategy')
    options = options.dup
    options.delete('strategy')
  end
  options.empty? ? nil : options
end

#to_hashObject

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
# File 'lib/puppet/pops/lookup/explainer.rb', line 291

def to_hash
  return branches[0].to_hash if branches.size == 1

  hash = super
  hash[:merge] = @merge.class.key
  options = options_wo_strategy
  hash[:options] = options unless options.nil?
  hash
end

#typeObject

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



301
302
303
# File 'lib/puppet/pops/lookup/explainer.rb', line 301

def type
  :merge
end