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
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 |