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



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

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

#accept_found_in_defaults(key, value) ⇒ Object



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

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

#accept_found_in_overrides(key, value) ⇒ Object



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

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

#accept_location_not_foundObject



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

def accept_location_not_found
  @current.location_not_found
end

#accept_merge_source(merge_source) ⇒ Object



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

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

#accept_module_not_found(module_name) ⇒ Object



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

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



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

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

#accept_not_found(key) ⇒ Object



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

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

#accept_result(result) ⇒ Object



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

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

#accept_text(text) ⇒ Object



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

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

#dump_on(io, indent, first_indent) ⇒ Object



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

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)


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

def explain_options?
  @explain_options
end

#only_explain_options?Boolean

Returns:

  • (Boolean)


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

def only_explain_options?
  @only_explain_options
end

#popObject



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

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

#to_hashObject



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

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