Class: Puppet::Pops::Adaptable::Adapter Private
- Defined in:
- lib/puppet/pops/adaptable.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Base class for an Adapter.
A typical adapter just defines some accessors.
A more advanced adapter may need to setup the adapter based on the object it is adapting.
Direct Known Subclasses
Puppet::Parser::Functions::AnonymousModuleAdapter, Puppet::Pops::Adapters::DocumentationAdapter, Puppet::Pops::Adapters::EmptyAlternativeAdapter, Puppet::Pops::Adapters::LoaderAdapter, Puppet::Pops::Adapters::LoaderAdapter::PathsAndNameCacheAdapter, Puppet::Pops::Adapters::ObjectIdCacheAdapter, Lookup::DataAdapter, Lookup::EnvironmentContext, Types::Annotation, Util::FileNamespaceAdapter, Util::ModuleDirectoriesAdapter
Class Method Summary collapse
-
.adapt(o, &block) {|adapter, o| ... } ⇒ Adapter<self>
private
Returns an existing adapter for the given object, or creates a new adapter if the object has not been adapted, or the adapter has been cleared.
-
.adapt_new(o, &block) {|adapter, o| ... } ⇒ Adapter<self>
private
Creates a new adapter, associates it with the given object and returns the adapter.
-
.associate_adapter(adapter, o) ⇒ adapter
private
Associates the given adapter with the given target object.
-
.clear(o) ⇒ Adapter?
private
Clears the adapter set in the given object o.
-
.create_adapter(o) ⇒ Adapter<self>
private
This base version creates an instance of the class (i.e. an instance of the concrete subclass of Adapter).
-
.get(o) ⇒ Adapter<self>?
private
Returns an existing adapter for the given object, or nil, if the object is not adapted.
-
.instance_var_name(name) ⇒ String
private
Returns a suitable instance variable name given a class name.
-
.self_attr_name ⇒ String
private
Returns a suitable instance variable name for the name of this instance.
-
.type_name ⇒ String
private
Returns the name of the class, or the name of the type if the class represents an Object type.
Class Method Details
.adapt(o) ⇒ Adapter<self> .adapt(o, {|adapter| block}) ⇒ Adapter<self> .adapt(o, {|adapter, o| block}) ⇒ Adapter<self>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns an existing adapter for the given object, or creates a new adapter if the object has not been adapted, or the adapter has been cleared.
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/puppet/pops/adaptable.rb', line 91 def self.adapt(o, &block) attr_name = self_attr_name value = o.instance_variable_get(attr_name) adapter = value || associate_adapter(create_adapter(o), o) if block_given? if block.arity == 1 block.call(adapter) else block.call(adapter, o) end end adapter end |
.adapt_new(o) ⇒ Adapter<self> .adapt_new(o, {|adapter| block}) ⇒ Adapter<self> .adapt_new(o, {|adapter, o| block}) ⇒ Adapter<self>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Creates a new adapter, associates it with the given object and returns the adapter.
This is used when a fresh adapter is wanted instead of possible returning an existing adapter as in the case of adapt.
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/puppet/pops/adaptable.rb', line 122 def self.adapt_new(o, &block) adapter = associate_adapter(create_adapter(o), o) if block_given? if block.arity == 1 block.call(adapter) else block.call(adapter, o) end end adapter end |
.associate_adapter(adapter, o) ⇒ adapter
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Associates the given adapter with the given target object
164 165 166 167 |
# File 'lib/puppet/pops/adaptable.rb', line 164 def self.associate_adapter(adapter, o) o.instance_variable_set(self_attr_name, adapter) adapter end |
.clear(o) ⇒ Adapter?
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Clears the adapter set in the given object o. Returns any set adapter or nil.
139 140 141 142 143 144 145 146 |
# File 'lib/puppet/pops/adaptable.rb', line 139 def self.clear(o) attr_name = self_attr_name if o.instance_variable_defined?(attr_name) o.send(:remove_instance_variable, attr_name) else nil end end |
.create_adapter(o) ⇒ Adapter<self>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This base version creates an instance of the class (i.e. an instance of the concrete subclass of Adapter). A Specialization may want to create an adapter instance specialized for the given target object.
155 156 157 |
# File 'lib/puppet/pops/adaptable.rb', line 155 def self.create_adapter(o) new end |
.get(o) ⇒ Adapter<self>?
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns an existing adapter for the given object, or nil, if the object is not adapted.
70 71 72 73 |
# File 'lib/puppet/pops/adaptable.rb', line 70 def self.get(o) attr_name = self_attr_name o.instance_variable_get(attr_name) end |
.instance_var_name(name) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a suitable instance variable name given a class name. The returned string is the fully qualified name of a class with '::' replaced by '_' since '::' is not allowed in an instance variable name.
176 177 178 |
# File 'lib/puppet/pops/adaptable.rb', line 176 def self.instance_var_name(name) name.split(DOUBLE_COLON).join(USCORE) end |
.self_attr_name ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a suitable instance variable name for the name of this instance. The name is created by calling Adapter#instance_var_name and then cached.
191 192 193 |
# File 'lib/puppet/pops/adaptable.rb', line 191 def self.self_attr_name @attr_name_sym ||= :"@#{instance_var_name(type_name)}" end |
.type_name ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns the name of the class, or the name of the type if the class represents an Object type
182 183 184 |
# File 'lib/puppet/pops/adaptable.rb', line 182 def self.type_name self.name end |