Update stdlib and concat to 6.1.0 both
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / pick_default.rb
1 #
2 # pick_default.rb
3 #
4 module Puppet::Parser::Functions
5   newfunction(:pick_default, :type => :rvalue, :doc => <<-DOC
6     @summary
7       This function will return the first value in a list of values that is not undefined or an empty string.
8
9     @return
10       This function is similar to a coalesce function in SQL in that it will return
11       the first value in a list of values that is not undefined or an empty string
12       If no value is found, it will return the last argument.
13
14     Typically, this function is used to check for a value in the Puppet
15     Dashboard/Enterprise Console, and failover to a default value like the
16     following:
17
18       $real_jenkins_version = pick_default($::jenkins_version, '1.449')
19
20     > *Note:*
21       The value of $real_jenkins_version will first look for a top-scope variable
22       called 'jenkins_version' (note that parameters set in the Puppet Dashboard/
23       Enterprise Console are brought into Puppet as top-scope variables), and,
24       failing that, will use a default value of 1.449.
25
26       Contrary to the pick() function, the pick_default does not fail if
27       all arguments are empty. This allows pick_default to use an empty value as
28       default.
29     DOC
30              ) do |args|
31     raise 'Must receive at least one argument.' if args.empty?
32     default = args.last
33     args = args[0..-2].compact
34     args.delete(:undef)
35     args.delete(:undefined)
36     args.delete('')
37     args << default
38     return args[0]
39   end
40 end