X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fjoin_keys_to_values.rb;h=73d4a1ff05dced93cdd9d086bc080872114dfdff;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=d8966bac7af32903ef41f4541d476346ce1e3be8;hpb=6963202b4b62c2816655ac9532521b018fdf83bd;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb b/3rdparty/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb index d8966bac7..73d4a1ff0 100644 --- a/3rdparty/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb +++ b/3rdparty/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb @@ -1,25 +1,29 @@ # -# join.rb +# join_keys_to_values.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 are cast to strings. If values are arrays, multiple keys -are added for each element. The return value is an array in -which each element is one joined key/value pair. - -*Examples:* + newfunction(:join_keys_to_values, :type => :rvalue, :doc => <<-DOC + @summary + This function joins each key of a hash to that key's corresponding value with a + separator. - join_keys_to_values({'a'=>1,'b'=>2}, " is ") + Keys are cast to strings. If values are arrays, multiple keys + are added for each element. The return value is an array in + which each element is one joined key/value pair. -Would result in: ["a is 1","b is 2"] + @example Example Usage: + join_keys_to_values({'a'=>1,'b'=>2}, " is ") # Results in: ["a is 1","b is 2"] + join_keys_to_values({'a'=>1,'b'=>[2,3]}, " is ") # Results in: ["a is 1","b is 2","b is 3"] - join_keys_to_values({'a'=>1,'b'=>[2,3]}, " is ") + @return [Hash] + The joined hash -Would result in: ["a is 1","b is 2","b is 3"] - EOS - ) do |arguments| + > **Note:** Since Puppet 5.0.0 - for more detailed control over the formatting (including indentations and + line breaks, delimiters around arrays and hash entries, between key/values in hash entries, and individual + formatting of values in the array) - see the `new` function for `String` and its formatting + options for `Array` and `Hash`. + DOC + ) do |arguments| # Validate the number of arguments. if arguments.size != 2 @@ -28,25 +32,26 @@ Would result in: ["a is 1","b is 2","b is 3"] # Validate the first argument. hash = arguments[0] - if not hash.is_a?(Hash) + unless 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) + unless 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| + hash.map { |k, v| if v.is_a?(Array) v.map { |va| String(k) + separator + String(va) } + elsif String(v) == 'undef' + String(k) else String(k) + separator + String(v) end - end.flatten - + }.flatten end end