diff options
author | Reinhard Vicinus <r.vicinus@metaways.de> | 2016-03-22 15:06:31 +0100 |
---|---|---|
committer | Reinhard Vicinus <r.vicinus@metaways.de> | 2016-03-22 16:24:09 +0100 |
commit | 85ff2a28a83984c827985181d58c55ca8c524ed6 (patch) | |
tree | c0ba919936c73e94e66f4952caeff47f9f746294 /lib | |
parent | b6383d259cf4917edd832ba31cf4dae2b4201235 (diff) |
improve suffix function to support the same feature set as prefix
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/parser/functions/suffix.rb | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/puppet/parser/functions/suffix.rb b/lib/puppet/parser/functions/suffix.rb index f7792d6..2908434 100644 --- a/lib/puppet/parser/functions/suffix.rb +++ b/lib/puppet/parser/functions/suffix.rb @@ -4,7 +4,8 @@ module Puppet::Parser::Functions newfunction(:suffix, :type => :rvalue, :doc => <<-EOS -This function applies a suffix to all elements in an array. +This function applies a suffix to all elements in an array, or to the keys +in a hash. *Examples:* @@ -18,10 +19,10 @@ Will return: ['ap','bp','cp'] raise(Puppet::ParseError, "suffix(): 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, "suffix(): expected first argument to be an Array, got #{array.inspect}" + unless enumerable.is_a?(Array) or enumerable.is_a?(Hash) + raise Puppet::ParseError, "suffix(): expected first argument to be an Array or a Hash, got #{enumerable.inspect}" end suffix = arguments[1] if arguments[1] @@ -32,10 +33,17 @@ Will return: ['ap','bp','cp'] end end - # Turn everything into string same as join would do ... - result = array.collect do |i| - i = i.to_s - suffix ? i + suffix : i + if enumerable.is_a?(Array) + # Turn everything into string same as join would do ... + result = enumerable.collect do |i| + i = i.to_s + suffix ? i + suffix : i + end + else + result = Hash[enumerable.map do |k,v| + k = k.to_s + [ suffix ? k + suffix : k, v ] + end] end return result |