1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
shared_context 'types_setup' do
# Do not include the special type Unit in this list
def all_types
[ Puppet::Pops::Types::PAnyType,
Puppet::Pops::Types::PUndefType,
Puppet::Pops::Types::PNotUndefType,
Puppet::Pops::Types::PDataType,
Puppet::Pops::Types::PScalarType,
Puppet::Pops::Types::PStringType,
Puppet::Pops::Types::PNumericType,
Puppet::Pops::Types::PIntegerType,
Puppet::Pops::Types::PFloatType,
Puppet::Pops::Types::PRegexpType,
Puppet::Pops::Types::PBooleanType,
Puppet::Pops::Types::PCollectionType,
Puppet::Pops::Types::PArrayType,
Puppet::Pops::Types::PHashType,
Puppet::Pops::Types::PIterableType,
Puppet::Pops::Types::PIteratorType,
Puppet::Pops::Types::PRuntimeType,
Puppet::Pops::Types::PHostClassType,
Puppet::Pops::Types::PResourceType,
Puppet::Pops::Types::PPatternType,
Puppet::Pops::Types::PEnumType,
Puppet::Pops::Types::PVariantType,
Puppet::Pops::Types::PStructType,
Puppet::Pops::Types::PTupleType,
Puppet::Pops::Types::PCallableType,
Puppet::Pops::Types::PType,
Puppet::Pops::Types::POptionalType,
Puppet::Pops::Types::PDefaultType,
Puppet::Pops::Types::PTypeReferenceType,
Puppet::Pops::Types::PTypeAliasType,
Puppet::Pops::Types::PSemVerType,
Puppet::Pops::Types::PSemVerRangeType,
Puppet::Pops::Types::PTimespanType,
Puppet::Pops::Types::PTimestampType,
Puppet::Pops::Types::PSensitiveType,
Puppet::Pops::Types::PBinaryType,
]
end
def scalar_types
# PVariantType is also scalar, if its types are all Scalar
[
Puppet::Pops::Types::PScalarType,
Puppet::Pops::Types::PStringType,
Puppet::Pops::Types::PNumericType,
Puppet::Pops::Types::PIntegerType,
Puppet::Pops::Types::PFloatType,
Puppet::Pops::Types::PRegexpType,
Puppet::Pops::Types::PBooleanType,
Puppet::Pops::Types::PPatternType,
Puppet::Pops::Types::PEnumType,
Puppet::Pops::Types::PSemVerType,
Puppet::Pops::Types::PSemVerRangeType,
Puppet::Pops::Types::PTimespanType,
Puppet::Pops::Types::PTimestampType,
]
end
def numeric_types
# PVariantType is also numeric, if its types are all numeric
[
Puppet::Pops::Types::PNumericType,
Puppet::Pops::Types::PIntegerType,
Puppet::Pops::Types::PFloatType,
]
end
def string_types
# PVariantType is also string type, if its types are all compatible
[
Puppet::Pops::Types::PStringType,
Puppet::Pops::Types::PPatternType,
Puppet::Pops::Types::PEnumType,
]
end
def collection_types
# PVariantType is also string type, if its types are all compatible
[
Puppet::Pops::Types::PCollectionType,
Puppet::Pops::Types::PHashType,
Puppet::Pops::Types::PArrayType,
Puppet::Pops::Types::PStructType,
Puppet::Pops::Types::PTupleType,
]
end
def data_compatible_types
result = scalar_types
result << Puppet::Pops::Types::PDataType
result << array_t(types::PDataType::DEFAULT)
result << types::TypeFactory.hash_of_data
result << Puppet::Pops::Types::PUndefType
result << not_undef_t(types::PDataType.new)
result << constrained_tuple_t(range_t(0, nil), types::PDataType::DEFAULT)
result
end
def type_from_class(c)
c.is_a?(Class) ? c::DEFAULT : c
end
end
|