summaryrefslogtreecommitdiff
path: root/puppet/modules/stdlib/lib/puppet/parser/functions/any2array.rb
blob: e71407e89e73a5272ad0e95ce2463bec88327aed (plain)
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
#
# any2array.rb
#

module Puppet::Parser::Functions
  newfunction(:any2array, :type => :rvalue, :doc => <<-EOS
This converts any object to an array containing that object. Empty argument
lists are converted to an empty array. Arrays are left untouched. Hashes are
converted to arrays of alternating keys and values.
    EOS
  ) do |arguments|

    if arguments.empty?
        return []
    end

    if arguments.length == 1
        if arguments[0].kind_of?(Array)
            return arguments[0]
        elsif arguments[0].kind_of?(Hash)
            result = []
            arguments[0].each do |key, value|
                result << key << value
            end
            return result
        end
    end

    return arguments
  end
end

# vim: set ts=2 sw=2 et :