]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/horizon/lib/puppet/parser/functions/os_any2array.rb
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / horizon / lib / puppet / parser / functions / os_any2array.rb
diff --git a/3rdparty/modules/horizon/lib/puppet/parser/functions/os_any2array.rb b/3rdparty/modules/horizon/lib/puppet/parser/functions/os_any2array.rb
new file mode 100644 (file)
index 0000000..a3877a0
--- /dev/null
@@ -0,0 +1,34 @@
+#
+# 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 :