puppet-horizon/lib/puppet/parser/functions/os_any2array.rb
Chris Hoge 8115642f4d Vendor any2array function to support stdlib 3.2
Many installations are pinned to stdlib 3.2. This change vendors
the any2arry function from stdlib 4 until Puppet Enterprise
catches up. At that point the vendored function will be removed.

Change-Id: Ide8a9c526ba36a0641c0e118c3280be0e766bd14
2014-05-02 14:28:13 -07:00

35 lines
849 B
Ruby

#
# os_any2array.rb
#
# TODO: Remove this function when puppetlabs-stdlib 4.0.0 is in wider use
module Puppet::Parser::Functions
newfunction(:os_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 :