Sha256: b4b8169924a0aaa470e3531db0f3fc6863589a5fa17dbae029bc8f0c7b6d5a4e

Contents?: true

Size: 1.55 KB

Versions: 8

Compression:

Stored size: 1.55 KB

Contents

# Returns the given value if it is an instance of the given type, and raises an error otherwise.
#
# @example how to assert type
#   # assert that `$b` is a non empty `String` and assign to `$a`
#   $a = assert_type(String[1], $b)
#
# See the documentation for "The Puppet Type System" for more information about types.
#
Puppet::Functions.create_function(:assert_type) do
  dispatch :assert_type do
    param 'Type', 'type'
    param 'Optional[Object]', 'value'
  end

  dispatch :assert_type_s do
    param 'String', 'type_string'
    param 'Optional[Object]', 'value'
  end

  # @param type [Type] the type the value must be an instance of
  # @param value [Optional[Object]] the value to assert
  #
  def assert_type(type, value)
    unless Puppet::Pops::Types::TypeCalculator.instance?(type,value)
      inferred_type = Puppet::Pops::Types::TypeCalculator.infer(value)
      # Do not give all the details - i.e. format as Integer, instead of Integer[n, n] for exact value, which
      # is just confusing. (OTOH: may need to revisit, or provide a better "type diff" output.
      #
      actual = Puppet::Pops::Types::TypeCalculator.generalize!(inferred_type)
      raise Puppet::ParseError, "assert_type(): Expected type #{type} does not match actual: #{actual}"
    end
    value
  end

  # @param type_string [String] the type the value must be an instance of given in String form
  # @param value [Optional[Object]] the value to assert
  #
  def assert_type_s(type_string, value)
    t = Puppet::Pops::Types::TypeParser.new.parse(type_string)
    assert_type(t, value)
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
puppet-3.6.2 lib/puppet/functions/assert_type.rb
puppet-3.6.2-x86-mingw32 lib/puppet/functions/assert_type.rb
puppet-3.6.1 lib/puppet/functions/assert_type.rb
puppet-3.6.1-x86-mingw32 lib/puppet/functions/assert_type.rb
puppet-3.6.0 lib/puppet/functions/assert_type.rb
puppet-3.6.0-x86-mingw32 lib/puppet/functions/assert_type.rb
puppet-3.6.0.rc1 lib/puppet/functions/assert_type.rb
puppet-3.6.0.rc1-x86-mingw32 lib/puppet/functions/assert_type.rb