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.



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

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



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

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

#accept_found_in_defaults(key, value) ⇒ Object



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

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

#accept_found_in_overrides(key, value) ⇒ Object



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

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

#accept_location_not_foundObject



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

def accept_location_not_found
  @current.location_not_found
end

#accept_merge_source(merge_source) ⇒ Object



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

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

#accept_module_not_found(module_name) ⇒ Object



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

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



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

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

#accept_not_found(key) ⇒ Object



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

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

#accept_result(result) ⇒ Object



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

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

#accept_text(text) ⇒ Object



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

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

#dump_on(io, indent, first_indent) ⇒ Object



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

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)


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

def explain_options?
  @explain_options
end

#only_explain_options?Boolean

Returns:

  • (Boolean)


499
500
501
# File 'lib/puppet/pops/lookup/explainer.rb', line 499

def only_explain_options?
  @only_explain_options
end

#popObject



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

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

#push(qualifier_type, qualifier) ⇒ Object



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

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
      raise ArgumentError, "Unknown Explain type #{qualifier_type}"
    end
  @current.branches << node
  @current = node
end

#to_hashObject



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

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