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

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

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

Returns a new instance of Explainer.



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

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



521
522
523
# File 'lib/puppet/pops/lookup/explainer.rb', line 521

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

#accept_found_in_defaults(key, value) ⇒ Object



517
518
519
# File 'lib/puppet/pops/lookup/explainer.rb', line 517

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

#accept_found_in_overrides(key, value) ⇒ Object



513
514
515
# File 'lib/puppet/pops/lookup/explainer.rb', line 513

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

#accept_location_not_foundObject



533
534
535
# File 'lib/puppet/pops/lookup/explainer.rb', line 533

def accept_location_not_found
  @current.location_not_found
end

#accept_merge_source(merge_source) ⇒ Object



525
526
527
# File 'lib/puppet/pops/lookup/explainer.rb', line 525

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

#accept_module_not_found(module_name) ⇒ Object



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

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



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

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

#accept_not_found(key) ⇒ Object



529
530
531
# File 'lib/puppet/pops/lookup/explainer.rb', line 529

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

#accept_result(result) ⇒ Object



549
550
551
# File 'lib/puppet/pops/lookup/explainer.rb', line 549

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

#accept_text(text) ⇒ Object



553
554
555
# File 'lib/puppet/pops/lookup/explainer.rb', line 553

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

#dump_on(io, indent, first_indent) ⇒ Object



557
558
559
560
# File 'lib/puppet/pops/lookup/explainer.rb', line 557

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

Returns:

  • (Boolean)


505
506
507
# File 'lib/puppet/pops/lookup/explainer.rb', line 505

def explain_options?
  @explain_options
end

#only_explain_options?Boolean

Returns:

  • (Boolean)


501
502
503
# File 'lib/puppet/pops/lookup/explainer.rb', line 501

def only_explain_options?
  @only_explain_options
end

#popObject



509
510
511
# File 'lib/puppet/pops/lookup/explainer.rb', line 509

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

#push(qualifier_type, qualifier) ⇒ Object



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

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



562
563
564
# File 'lib/puppet/pops/lookup/explainer.rb', line 562

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