Class: Puppet::Pops::Lookup::Invocation
- Defined in:
- lib/puppet/pops/lookup/invocation.rb
Overview
Instance Attribute Summary collapse
- #default_values ⇒ Object readonly
- #explainer ⇒ Object readonly
- #module_name ⇒ Object
- #override_values ⇒ Object readonly
- #scope ⇒ Object readonly
- #top_key ⇒ Object
Instance Method Summary collapse
- #check(name) ⇒ 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.
-
#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.
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 18 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 = 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 |
Instance Method Details
#check(name) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 29 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 |
#explain_options? ⇒ Boolean
75 76 77 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 75 def @explainer.nil? ? false : @explainer. end |
#only_explain_options? ⇒ Boolean
71 72 73 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 71 def @explainer.nil? ? false : @explainer. end |
#report_found(key, value) ⇒ Object
89 90 91 92 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 89 def report_found(key, value) @explainer.accept_found(key, value) unless @explainer.nil? value end |
#report_found_in_defaults(key, value) ⇒ Object
84 85 86 87 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 84 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
79 80 81 82 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 79 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
94 95 96 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 94 def report_merge_source(merge_source) @explainer.accept_merge_source(merge_source) unless @explainer.nil? end |
#report_module_not_found ⇒ Object
114 115 116 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 114 def report_module_not_found @explainer.accept_module_not_found unless @explainer.nil? end |
#report_not_found(key) ⇒ Object
106 107 108 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 106 def report_not_found(key) @explainer.accept_not_found(key) unless @explainer.nil? end |
#report_path_not_found ⇒ Object
110 111 112 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 110 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
101 102 103 104 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 101 def report_result(value) @explainer.accept_result(value) unless @explainer.nil? value 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
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/puppet/pops/lookup/invocation.rb', line 58 def with(qualifier_type, qualifier) if @explainer.nil? yield else @explainer.push(qualifier_type, qualifier) begin yield ensure @explainer.pop end end end |