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


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


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

def explain_options?
  @explain_options
end

#only_explain_options?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