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.
92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/puppet/pops/adaptable.rb', line 92 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.
123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/puppet/pops/adaptable.rb', line 123 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
165 166 167 168 |
# File 'lib/puppet/pops/adaptable.rb', line 165 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.
140 141 142 143 144 145 146 147 |
# File 'lib/puppet/pops/adaptable.rb', line 140 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.
156 157 158 |
# File 'lib/puppet/pops/adaptable.rb', line 156 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.
71 72 73 74 |
# File 'lib/puppet/pops/adaptable.rb', line 71 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.
177 178 179 |
# File 'lib/puppet/pops/adaptable.rb', line 177 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.
192 193 194 |
# File 'lib/puppet/pops/adaptable.rb', line 192 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
183 184 185 |
# File 'lib/puppet/pops/adaptable.rb', line 183 def self.type_name self.name end |