diff options
author | Stefan Goethals <stefan@zipkid.eu> | 2014-06-04 06:12:22 -0700 |
---|---|---|
committer | Morgan Haskel <morgan@puppetlabs.com> | 2015-03-03 16:20:55 -0800 |
commit | 0236cd51bc2724b4ac68b91dda01d1b58b572df8 (patch) | |
tree | 12b8950f2c12fcecce791a08b2f790066921bb9b /lib/puppet/parser/functions | |
parent | b8547b7c29801ca3d89230dfc95716d6f93040ab (diff) | |
download | puppet-stdlib-0236cd51bc2724b4ac68b91dda01d1b58b572df8.tar.gz puppet-stdlib-0236cd51bc2724b4ac68b91dda01d1b58b572df8.tar.bz2 |
Add support for hashes in the prefix function
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
Diffstat (limited to 'lib/puppet/parser/functions')
-rw-r--r-- | lib/puppet/parser/functions/prefix.rb | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/puppet/parser/functions/prefix.rb b/lib/puppet/parser/functions/prefix.rb index d02286a..ac1c58a 100644 --- a/lib/puppet/parser/functions/prefix.rb +++ b/lib/puppet/parser/functions/prefix.rb @@ -4,7 +4,7 @@ module Puppet::Parser::Functions newfunction(:prefix, :type => :rvalue, :doc => <<-EOS -This function applies a prefix to all elements in an array. +This function applies a prefix to all elements in an array or a hash. *Examples:* @@ -18,10 +18,10 @@ Will return: ['pa','pb','pc'] raise(Puppet::ParseError, "prefix(): Wrong number of arguments " + "given (#{arguments.size} for 1)") if arguments.size < 1 - array = arguments[0] + enumerable = arguments[0] - unless array.is_a?(Array) - raise Puppet::ParseError, "prefix(): expected first argument to be an Array, got #{array.inspect}" + unless enumerable.is_a?(Array) or enumerable.is_a?(Hash) + raise Puppet::ParseError, "prefix(): expected first argument to be an Array or a Hash, got #{enumerable.inspect}" end prefix = arguments[1] if arguments[1] @@ -32,10 +32,17 @@ Will return: ['pa','pb','pc'] end end - # Turn everything into string same as join would do ... - result = array.collect do |i| - i = i.to_s - prefix ? prefix + i : i + if enumerable.is_a?(Array) + # Turn everything into string same as join would do ... + result = enumerable.collect do |i| + i = i.to_s + prefix ? prefix + i : i + end + else + result = Hash[enumerable.map do |k,v| + k = k.to_s + [ prefix ? prefix + k : k, v ] + end] end return result |