Class: Puppet::Pops::Types::PIterableType Private

Inherits:
PTypeWithContainedType show all
Defined in:
lib/puppet/pops/types/types.rb

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.

Constant Summary collapse

DEFAULT =

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.

PIterableType.new(nil)

Instance Attribute Summary

Attributes inherited from PTypeWithContainedType

#type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from PTypeWithContainedType

#accept, #eql?, #generalize, #hash, #initialize, #normalize, #resolve

Methods inherited from PAnyType

#==, #accept, #assignable?, #callable?, #callable_args?, #callable_with?, #check_self_recursion, create, #create, #eql?, #generalize, #hash, #kind_of_callable?, #loader, #name, #new_function, new_function, #normalize, #really_instance?, #resolve, #roundtrip_with_string?, #simple_name, simple_name, #to_alias_expanded_s, #to_s

Methods inherited from TypedModelObject

_pcore_type, create_ptype, register_ptypes

Methods included from Visitable

#accept

Methods included from PuppetObject

#_pcore_all_contents, #_pcore_contents, #_pcore_init_hash, #_pcore_type, #to_s

Constructor Details

This class inherits a constructor from Puppet::Pops::Types::PTypeWithContainedType

Class Method Details

.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.



1408
1409
1410
1411
1412
1413
1414
# File 'lib/puppet/pops/types/types.rb', line 1408

def self.register_ptype(loader, ir)
  create_ptype(loader, ir, 'AnyType',
               'type' => {
                 KEY_TYPE => POptionalType.new(PTypeType::DEFAULT),
                 KEY_VALUE => nil
               })
end

Instance Method Details

#element_typeObject

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.



1416
1417
1418
# File 'lib/puppet/pops/types/types.rb', line 1416

def element_type
  @type
end

#instance?(o, guard = nil) ⇒ Boolean

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.



1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
# File 'lib/puppet/pops/types/types.rb', line 1420

def instance?(o, guard = nil)
  if @type.nil? || @type.assignable?(PAnyType::DEFAULT, guard)
    # Any element_type will do
    case o
    when Iterable, String, Hash, Array, Range, PEnumType
      true
    when Integer
      o >= 0
    when PIntegerType
      o.finite_range?
    when PTypeAliasType
      instance?(o.resolved_type, guard)
    else
      false
    end
  else
    assignable?(TypeCalculator.infer(o), guard)
  end
end

#iterable?(guard = nil) ⇒ Boolean

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.



1440
1441
1442
# File 'lib/puppet/pops/types/types.rb', line 1440

def iterable?(guard = nil)
  true
end

#iterable_type(guard = nil) ⇒ 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.



1444
1445
1446
# File 'lib/puppet/pops/types/types.rb', line 1444

def iterable_type(guard = nil)
  self
end