Class: Puppet::Pops::Lookup::Invocation
- Defined in:
- lib/puppet/pops/lookup/invocation.rb
Instance Attribute Summary collapse
- #default_values ⇒ Object readonly
- #explainer ⇒ Object readonly
- #module_name ⇒ Object
- #override_values ⇒ Object readonly
- #scope ⇒ Object readonly
- #top_key ⇒ Object
Class Method Summary collapse
Instance Method Summary collapse
- #check(name) ⇒ Object
- #emit_debug_info(preamble) ⇒ Object
- #explain_options? ⇒ Boolean
-
#initialize(scope, override_values = {}, default_values = {}, explainer = nil) ⇒ Invocation
constructor
Creates a context object for a lookup invocation.
- #only_explain_options? ⇒ Boolean
- #report_found(key, value) ⇒ Object
- #report_found_in_defaults(key, value) ⇒ Object
- #report_found_in_overrides(key, value) ⇒ Object
- #report_merge_source(merge_source) ⇒ Object
- #report_module_not_found ⇒ Object
- #report_not_found(key) ⇒ Object
- #report_path_not_found ⇒ Object
-
#report_result(value) ⇒ Object
Report the result of a merge or fully resolved interpolated string.
- #report_text(&block) ⇒ Object
-
#with(qualifier_type, qualifier) ⇒ Object
The qualifier_type can be one of: :global - qualifier is the data binding terminus name :data_provider - qualifier a DataProvider instance :path - qualifier is a ResolvedPath instance :merge - qualifier is a MergeStrategy instance :module - qualifier is the name of a module :interpolation - qualifier is the unresolved interpolation expression :meta - qualifier is the module name :data - qualifier is the key.
Constructor Details
#initialize(scope, override_values = {}, default_values = {}, explainer = nil) ⇒ Invocation
Creates a context object for a lookup invocation. The object contains the current scope, overrides, and default values and may optionally contain an ExplanationAcceptor instance that will receive book-keeping information about the progress of the lookup.
If the explain argument is a boolean, then false means that no explanation is needed and true means that the default explanation acceptor should be used. The explain argument may also be an instance of the ExplanationAcceptor class.
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 22 def initialize(scope, override_values = {}, default_values = {}, explainer = nil) @name_stack = [] @scope = scope @override_values = override_values @default_values = default_values unless explainer.is_a?(Explainer) explainer = explainer == true ? Explainer.new : nil end explainer = DebugExplainer.new(explainer) if Puppet[:debug] && !explainer.is_a?(DebugExplainer) @explainer = explainer end |
Instance Attribute Details
#default_values ⇒ Object (readonly)
3 4 5 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 3 def default_values @default_values end |
#explainer ⇒ Object (readonly)
3 4 5 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 3 def explainer @explainer end |
#module_name ⇒ Object
4 5 6 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 4 def module_name @module_name end |
#override_values ⇒ Object (readonly)
3 4 5 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 3 def override_values @override_values end |
#scope ⇒ Object (readonly)
3 4 5 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 3 def scope @scope end |
#top_key ⇒ Object
4 5 6 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 4 def top_key @top_key end |
Class Method Details
.current ⇒ Object
6 7 8 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 6 def self.current nil # TODO, determine how to obtain the current lookup invocation. end |
Instance Method Details
#check(name) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 34 def check(name) if @name_stack.include?(name) raise Puppet::DataBinding::RecursiveLookupError, "Recursive lookup detected in [#{@name_stack.join(', ')}]" end return unless block_given? @name_stack.push(name) begin yield rescue Puppet::DataBinding::LookupError raise rescue Puppet::Error => detail raise Puppet::DataBinding::LookupError.new(detail., detail) ensure @name_stack.pop end end |
#emit_debug_info(preamble) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 52 def emit_debug_info(preamble) debug_explainer = @explainer if debug_explainer.is_a?(DebugExplainer) @explainer = debug_explainer.wrapped_explainer debug_explainer.emit_debug_info(preamble) end end |
#explain_options? ⇒ Boolean
88 89 90 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 88 def @explainer.nil? ? false : @explainer. end |
#only_explain_options? ⇒ Boolean
84 85 86 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 84 def @explainer.nil? ? false : @explainer. end |
#report_found(key, value) ⇒ Object
102 103 104 105 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 102 def report_found(key, value) @explainer.accept_found(key, value) unless @explainer.nil? value end |
#report_found_in_defaults(key, value) ⇒ Object
97 98 99 100 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 97 def report_found_in_defaults(key, value) @explainer.accept_found_in_defaults(key, value) unless @explainer.nil? value end |
#report_found_in_overrides(key, value) ⇒ Object
92 93 94 95 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 92 def report_found_in_overrides(key, value) @explainer.accept_found_in_overrides(key, value) unless @explainer.nil? value end |
#report_merge_source(merge_source) ⇒ Object
107 108 109 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 107 def report_merge_source(merge_source) @explainer.accept_merge_source(merge_source) unless @explainer.nil? end |
#report_module_not_found ⇒ Object
127 128 129 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 127 def report_module_not_found @explainer.accept_module_not_found unless @explainer.nil? end |
#report_not_found(key) ⇒ Object
119 120 121 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 119 def report_not_found(key) @explainer.accept_not_found(key) unless @explainer.nil? end |
#report_path_not_found ⇒ Object
123 124 125 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 123 def report_path_not_found @explainer.accept_path_not_found unless @explainer.nil? end |
#report_result(value) ⇒ Object
Report the result of a merge or fully resolved interpolated string
114 115 116 117 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 114 def report_result(value) @explainer.accept_result(value) unless @explainer.nil? value end |
#report_text(&block) ⇒ Object
131 132 133 134 135 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 131 def report_text(&block) unless @explainer.nil? @explainer.accept_text(block.call) end end |
#with(qualifier_type, qualifier) ⇒ Object
The qualifier_type can be one of: :global - qualifier is the data binding terminus name :data_provider - qualifier a DataProvider instance :path - qualifier is a ResolvedPath instance :merge - qualifier is a MergeStrategy instance :module - qualifier is the name of a module :interpolation - qualifier is the unresolved interpolation expression :meta - qualifier is the module name :data - qualifier is the key
71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 71 def with(qualifier_type, qualifier) if @explainer.nil? yield else @explainer.push(qualifier_type, qualifier) begin yield ensure @explainer.pop end end end |