class Puppet::Pops::Types::PMetaType
Attributes
loader[R]
Public Class Methods
register_ptype(loader, ir)
click to toggle source
# File lib/puppet/pops/types/p_meta_type.rb 16 def self.register_ptype(loader, ir) 17 # Abstract type. It doesn't register anything 18 end
Public Instance Methods
accept(visitor, guard)
click to toggle source
Calls superclass method
# File lib/puppet/pops/types/p_meta_type.rb 20 def accept(visitor, guard) 21 annotatable_accept(visitor, guard) 22 super 23 end
instance?(o, guard = nil)
click to toggle source
# File lib/puppet/pops/types/p_meta_type.rb 25 def instance?(o, guard = nil) 26 raise NotImplementedError, "Subclass of PMetaType should implement 'instance?'" 27 end
resolve(loader)
click to toggle source
Called from the TypeParser once it has found a type using the Loader. The TypeParser will interpret the contained expression and the resolved type is remembered. This method also checks and remembers if the resolve type contains self recursion.
@param type_parser [TypeParser] type parser that will interpret the type expression @param loader [Loader::Loader] loader to use when loading type aliases @return [PTypeAliasType] the receiver of the call, i.e. `self` @api private
# File lib/puppet/pops/types/p_meta_type.rb 37 def resolve(loader) 38 unless @init_hash_expression.nil? 39 @loader = loader 40 @self_recursion = true # assumed while it being found out below 41 42 init_hash_expression = @init_hash_expression 43 @init_hash_expression = nil 44 if init_hash_expression.is_a?(Model::LiteralHash) 45 init_hash = resolve_literal_hash(loader, init_hash_expression) 46 else 47 init_hash = resolve_hash(loader, init_hash_expression) 48 end 49 _pcore_init_from_hash(init_hash) 50 51 # Find out if this type is recursive. A recursive type has performance implications 52 # on several methods and this knowledge is used to avoid that for non-recursive 53 # types. 54 guard = RecursionGuard.new 55 accept(NoopTypeAcceptor::INSTANCE, guard) 56 @self_recursion = guard.recursive_this?(self) 57 end 58 self 59 end
resolve_hash(loader, init_hash)
click to toggle source
# File lib/puppet/pops/types/p_meta_type.rb 65 def resolve_hash(loader, init_hash) 66 resolve_type_refs(loader, init_hash) 67 end
resolve_literal_hash(loader, init_hash_expression)
click to toggle source
# File lib/puppet/pops/types/p_meta_type.rb 61 def resolve_literal_hash(loader, init_hash_expression) 62 TypeParser.singleton.interpret_LiteralHash(init_hash_expression, loader) 63 end
resolve_type_refs(loader, o)
click to toggle source
# File lib/puppet/pops/types/p_meta_type.rb 69 def resolve_type_refs(loader, o) 70 case o 71 when Hash 72 Hash[o.map { |k, v| [resolve_type_refs(loader, k), resolve_type_refs(loader, v)] }] 73 when Array 74 o.map { |e| resolve_type_refs(loader, e) } 75 when PAnyType 76 o.resolve(loader) 77 else 78 o 79 end 80 end
resolved?()
click to toggle source
# File lib/puppet/pops/types/p_meta_type.rb 82 def resolved? 83 @init_hash_expression.nil? 84 end
to_s()
click to toggle source
Returns the expanded string the form of the alias, e.g. <alias name> = <resolved type>
@return [String] the expanded form of this alias @api public
# File lib/puppet/pops/types/p_meta_type.rb 90 def to_s 91 TypeFormatter.singleton.alias_expanded_string(self) 92 end