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

Inherits:
ExplainNode 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

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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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:

API:

  • private



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:

API:

  • private



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.

API:

  • private



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.

API:

  • private



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.

API:

  • private



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

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