Class: Puppet::Pops::Lookup::Explainer Private

Inherits:
ExplainNode show all
Defined in:
lib/puppet/pops/lookup/explainer.rb

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.

Direct Known Subclasses

DebugExplainer

Instance Method Summary collapse

Methods inherited from ExplainNode

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

Constructor Details

#initialize(explain_options = false, only_explain_options = false) ⇒ Explainer

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 Explainer.



465
466
467
468
469
# File 'lib/puppet/pops/lookup/explainer.rb', line 465

def initialize(explain_options = false, only_explain_options = false)
  @current = self
  @explain_options = explain_options
  @only_explain_options = only_explain_options
end

Instance Method Details

#accept_found(key, value) ⇒ 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.



523
524
525
# File 'lib/puppet/pops/lookup/explainer.rb', line 523

def accept_found(key, value)
  @current.found(key, value)
end

#accept_found_in_defaults(key, value) ⇒ 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.



519
520
521
# File 'lib/puppet/pops/lookup/explainer.rb', line 519

def accept_found_in_defaults(key, value)
  @current.found_in_defaults(key, value)
end

#accept_found_in_overrides(key, value) ⇒ 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.



515
516
517
# File 'lib/puppet/pops/lookup/explainer.rb', line 515

def accept_found_in_overrides(key, value)
  @current.found_in_overrides(key, value)
end

#accept_location_not_foundObject

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.



535
536
537
# File 'lib/puppet/pops/lookup/explainer.rb', line 535

def accept_location_not_found
  @current.location_not_found
end

#accept_merge_source(merge_source) ⇒ 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.



527
528
529
# File 'lib/puppet/pops/lookup/explainer.rb', line 527

def accept_merge_source(merge_source)
  @current.branches << ExplainMergeSource.new(merge_source)
end

#accept_module_not_found(module_name) ⇒ 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.



539
540
541
542
543
# File 'lib/puppet/pops/lookup/explainer.rb', line 539

def accept_module_not_found(module_name)
  push(:module, module_name)
  @current.module_not_found
  pop
end

#accept_module_provider_not_found(module_name) ⇒ 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.



545
546
547
548
549
# File 'lib/puppet/pops/lookup/explainer.rb', line 545

def accept_module_provider_not_found(module_name)
  push(:module, module_name)
  @current.module_provider_not_found
  pop
end

#accept_not_found(key) ⇒ 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.



531
532
533
# File 'lib/puppet/pops/lookup/explainer.rb', line 531

def accept_not_found(key)
  @current.not_found(key)
end

#accept_result(result) ⇒ 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.



551
552
553
# File 'lib/puppet/pops/lookup/explainer.rb', line 551

def accept_result(result)
  @current.result(result)
end

#accept_text(text) ⇒ 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.



555
556
557
# File 'lib/puppet/pops/lookup/explainer.rb', line 555

def accept_text(text)
  @current.text(text)
end

#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.



559
560
561
562
# File 'lib/puppet/pops/lookup/explainer.rb', line 559

def dump_on(io, indent, first_indent)
  branches.each { |b| b.dump_on(io, indent, first_indent) }
  dump_texts(io, indent)
end

#explain_options?Boolean

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:

  • (Boolean)


507
508
509
# File 'lib/puppet/pops/lookup/explainer.rb', line 507

def explain_options?
  @explain_options
end

#only_explain_options?Boolean

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:

  • (Boolean)


503
504
505
# File 'lib/puppet/pops/lookup/explainer.rb', line 503

def only_explain_options?
  @only_explain_options
end

#popObject

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.



511
512
513
# File 'lib/puppet/pops/lookup/explainer.rb', line 511

def pop
  @current = @current.parent unless @current.parent.nil?
end

#push(qualifier_type, qualifier) ⇒ 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.



471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
# File 'lib/puppet/pops/lookup/explainer.rb', line 471

def push(qualifier_type, qualifier)
  node = case qualifier_type
         when :global
           ExplainGlobal.new(@current, qualifier)
         when :location
           ExplainLocation.new(@current, qualifier)
         when :interpolate
           ExplainInterpolate.new(@current, qualifier)
         when :data_provider
           ExplainDataProvider.new(@current, qualifier)
         when :merge
           ExplainMerge.new(@current, qualifier)
         when :module
           ExplainModule.new(@current, qualifier)
         when :scope
           ExplainScope.new(@current, qualifier)
         when :sub_lookup
           ExplainSubLookup.new(@current, qualifier)
         when :segment
           ExplainKeySegment.new(@current, qualifier)
         when :meta, :data
           ExplainTop.new(@current, qualifier_type, qualifier)
         when :invalid_key
           ExplainInvalidKey.new(@current, qualifier)
         else
           # TRANSLATORS 'Explain' is referring to the 'Explainer' class and should not be translated
           raise ArgumentError, _("Unknown Explain type %{qualifier_type}") % { qualifier_type: qualifier_type }
         end
  @current.branches << node
  @current = node
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.



564
565
566
# File 'lib/puppet/pops/lookup/explainer.rb', line 564

def to_hash
  branches.size == 1 ? branches[0].to_hash : super
end