Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
# frozen_string_literal: true
Puppet::Parser::Functions.newfunction(
:assert_type,
:type => :rvalue,
:arity => -3,
:doc => <<~DOC
Returns the given value if it is of the given
[data type](https://puppet.com/docs/puppet/latest/lang_data.html), or
otherwise either raises an error or executes an optional two-parameter
[lambda](https://puppet.com/docs/puppet/latest/lang_lambdas.html).
The function takes two mandatory arguments, in this order:
1. The expected data type.
2. A value to compare against the expected data type.
**Example**: Using `assert_type`
~~~ puppet
$raw_username = 'Amy Berry'
# Assert that $raw_username is a non-empty string and assign it to $valid_username.
$valid_username = assert_type(String[1], $raw_username)
# $valid_username contains "Amy Berry".
# If $raw_username was an empty string or a different data type, the Puppet run would
# fail with an "Expected type does not match actual" error.
~~~
You can use an optional lambda to provide enhanced feedback. The lambda takes two
mandatory parameters, in this order:
1. The expected data type as described in the function's first argument.
2. The actual data type of the value.
**Example**: Using `assert_type` with a warning and default value
~~~ puppet
$raw_username = 'Amy Berry'
# Assert that $raw_username is a non-empty string and assign it to $valid_username.
# If it isn't, output a warning describing the problem and use a default value.
$valid_username = assert_type(String[1], $raw_username) |$expected, $actual| {
warning( "The username should be \'${expected}\', not \'${actual}\'. Using 'anonymous'." )
'anonymous'
}
# $valid_username contains "Amy Berry".
# If $raw_username was an empty string, the Puppet run would set $valid_username to
# "anonymous" and output a warning: "The username should be 'String[1, default]', not
# 'String[0, 0]'. Using 'anonymous'."
~~~
For more information about data types, see the
[documentation](https://puppet.com/docs/puppet/latest/lang_data.html).
- Since 4.0.0
DOC
) do |_args|
Puppet::Parser::Functions::Error.is4x('assert_type')
end