Puppet Function: sprintf_hash

Defined in:
vendor_modules/stdlib/lib/puppet/functions/sprintf_hash.rb
Function type:
Ruby 4.x API

Summary

Uses sprintf with named references.

Overview

sprintf_hash(String $format, Hash $arguments)Any

The first parameter is format string describing how the rest of the parameters in the hash should be formatted. See the documentation for the `Kernel::sprintf` function in Ruby for all the details.

In the given argument hash with parameters, all keys are converted to symbols so they work with the `sprintf` function.

Note that since Puppet 4.10.10, and 5.3.4 this functionality is supported by the `sprintf` function in puppet core.

Examples:

Format a string and number

$output = sprintf_hash('String: %<foo>s / number converted to binary: %<number>b',
                       { 'foo' => 'a string', 'number' => 5 })
# $output = 'String: a string / number converted to binary: 101'

Parameters:

  • format (String)

    The format to use.

  • arguments (Hash)

    Hash with parameters.

Returns:

  • (Any)

    The formatted string.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'vendor_modules/stdlib/lib/puppet/functions/sprintf_hash.rb', line 21

Puppet::Functions.create_function(:sprintf_hash) do
  # @param format The format to use.
  # @param arguments Hash with parameters.
  # @return The formatted string.
  dispatch :sprintf_hash do
    param 'String', :format
    param 'Hash', :arguments
    # Disabled for now. This gives issues on puppet 4.7.1.
    # return_type 'String'
  end

  def sprintf_hash(format, arguments)
    call_function('deprecation', 'sprintf_hash', 'This method is deprecated. From Puppet 4.10.10/5.3.4 please use the built-in sprintf instead')

    Kernel.sprintf(format, Hash[arguments.map { |(k, v)| [k.to_sym, v] }])
  end
end