Method: Puppet::Pops::Types::PTypeSetType#resolve_hash

Defined in:
lib/puppet/pops/types/p_type_set_type.rb

#resolve_hash(loader, init_hash) ⇒ 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.



323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# File 'lib/puppet/pops/types/p_type_set_type.rb', line 323

def resolve_hash(loader, init_hash)
  result = Hash[init_hash.map do |key, value|
    key = resolve_type_refs(loader, key)
    value = resolve_type_refs(loader, value) unless key == KEY_TYPES && value.is_a?(Hash)
    [key, value]
  end]
  name_auth = resolve_name_authority(result, loader)
  types = result[KEY_TYPES]
  if types.is_a?(Hash)
    types.each do |type_name, value|
      full_name = "#{@name}::#{type_name}".freeze
      typed_name = Loader::TypedName.new(:type, full_name, name_auth)
      meta_name = value.is_a?(Hash) ? 'Object' : 'TypeAlias'
      type = Loader::TypeDefinitionInstantiator.create_named_type(full_name, meta_name, value, name_auth)
      loader.set_entry(typed_name, type)
      types[type_name] = type
    end
  end
  result
end