Class: Puppet::Pops::Types::Annotation Private
- Inherits:
-
Adaptable::Adapter
- Object
- Adaptable::Adapter
- Puppet::Pops::Types::Annotation
- Includes:
- PuppetObject
- Defined in:
- lib/puppet/pops/types/annotation.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.
Pcore variant of the Adaptable::Adapter. Uses a Pcore Object type instead of a Class
Direct Known Subclasses
Constant Summary collapse
- CLEAR =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'clear'.freeze
Class Method Summary collapse
- ._pcore_type ⇒ Object private
-
.annotate(o) ⇒ Annotation<self>
private
Finds an existing annotation for the given object and returns it.
-
.annotate_new(o, init_hash) ⇒ Annotation<self>
private
Forces the creation or removal of an annotation of this type.
-
.register_ptype(loader, ir) ⇒ Object
private
Register the Annotation type.
-
.type_name ⇒ String
private
Uses name of type instead of name of the class (the class is likely dynamically generated and as such, has no name).
Methods included from PuppetObject
#_pcore_all_contents, #_pcore_contents, #_pcore_init_hash, #_pcore_type
Methods inherited from Adaptable::Adapter
adapt, adapt_new, associate_adapter, clear, create_adapter, get, instance_var_name, self_attr_name
Class Method Details
._pcore_type ⇒ Object
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.
14 15 16 |
# File 'lib/puppet/pops/types/annotation.rb', line 14 def self._pcore_type @type end |
.annotate(o) ⇒ Annotation<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.
Finds an existing annotation for the given object and returns it. If no annotation was found, and a block is given, a new annotation is created from the initializer hash that must be returned from the block. If no annotation was found and no block is given, this method returns ‘nil`
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/puppet/pops/types/annotation.rb', line 27 def self.annotate(o) adapter = get(o) if adapter.nil? if o.is_a?(Annotatable) init_hash = o.annotations[_pcore_type] init_hash = yield if init_hash.nil? && block_given? else init_hash = yield if block_given? end adapter = associate_adapter(_pcore_type.from_hash(init_hash), o) unless init_hash.nil? end adapter end |
.annotate_new(o, init_hash) ⇒ Annotation<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.
Forces the creation or removal of an annotation of this type. If ‘init_hash` is a hash, a new annotation is created and returned If `init_hash` is `nil`, then the annotation is cleared and the previous annotation is returned.
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/puppet/pops/types/annotation.rb', line 49 def self.annotate_new(o, init_hash) if o.is_a?(Annotatable) && o.annotations.include?(_pcore_type) # Prevent clear or redefine of annotations declared on type action = init_hash == CLEAR ? 'clear' : 'redefine' raise ArgumentError, "attempt to #{action} #{type_name} annotation declared on #{o.label}" end if init_hash == CLEAR clear(o) else associate_adapter(_pcore_type.from_hash(init_hash), o) end end |
.register_ptype(loader, ir) ⇒ Object
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.
Register the Annotation type. This is the type that all custom Annotations will inherit from.
10 11 12 |
# File 'lib/puppet/pops/types/annotation.rb', line 10 def self.register_ptype(loader, ir) @type = Pcore::create_object_type(loader, ir, self, 'Annotation', nil, EMPTY_HASH) 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.
Uses name of type instead of name of the class (the class is likely dynamically generated and as such, has no name)
66 67 68 |
# File 'lib/puppet/pops/types/annotation.rb', line 66 def self.type_name _pcore_type.name end |