diff options
author | Jeff McCune <jeff@puppetlabs.com> | 2012-11-20 16:17:08 -0500 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2012-11-20 16:17:08 -0500 |
commit | 32419e77edd2908f767490f00e5d333ea80d046c (patch) | |
tree | a8dced5c3434d686c26c3d571c2bbbe664b20160 /lib/puppet/parser/functions/join_keys_to_values.rb | |
parent | 326a13908ba8a725a85330d040e3c5cc0b211524 (diff) | |
parent | 8647691c3a51fb343e5115a5eed38541536a0d30 (diff) | |
download | puppet-stdlib-32419e77edd2908f767490f00e5d333ea80d046c.tar.gz puppet-stdlib-32419e77edd2908f767490f00e5d333ea80d046c.tar.bz2 |
Merge branch '4.x'
* 4.x:
Add join_keys_to_values function
Diffstat (limited to 'lib/puppet/parser/functions/join_keys_to_values.rb')
-rw-r--r-- | lib/puppet/parser/functions/join_keys_to_values.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/join_keys_to_values.rb b/lib/puppet/parser/functions/join_keys_to_values.rb new file mode 100644 index 0000000..e9924fe --- /dev/null +++ b/lib/puppet/parser/functions/join_keys_to_values.rb @@ -0,0 +1,47 @@ +# +# join.rb +# + +module Puppet::Parser::Functions + newfunction(:join_keys_to_values, :type => :rvalue, :doc => <<-EOS +This function joins each key of a hash to that key's corresponding value with a +separator. Keys and values are cast to strings. The return value is an array in +which each element is one joined key/value pair. + +*Examples:* + + join_keys_to_values({'a'=>1,'b'=>2}, " is ") + +Would result in: ["a is 1","b is 2"] + EOS + ) do |arguments| + + # Validate the number of arguments. + if arguments.size != 2 + raise(Puppet::ParseError, "join_keys_to_values(): Takes exactly two " + + "arguments, but #{arguments.size} given.") + end + + # Validate the first argument. + hash = arguments[0] + if not hash.is_a?(Hash) + raise(TypeError, "join_keys_to_values(): The first argument must be a " + + "hash, but a #{hash.class} was given.") + end + + # Validate the second argument. + separator = arguments[1] + if not separator.is_a?(String) + raise(TypeError, "join_keys_to_values(): The second argument must be a " + + "string, but a #{separator.class} was given.") + end + + # Join the keys to their values. + hash.map do |k,v| + String(k) + separator + String(v) + end + + end +end + +# vim: set ts=2 sw=2 et : |