X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fmerge.rb;h=9a0e8c1f0f6eb75b8e1527192c46689ed230d772;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=1b39f20600fe07186fc91f7d0ac1d1de4c4b8801;hpb=ad88f67c13ae0f1a08936dad643f1e3509ab5f40;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/parser/functions/merge.rb b/3rdparty/modules/stdlib/lib/puppet/parser/functions/merge.rb index 1b39f2060..9a0e8c1f0 100644 --- a/3rdparty/modules/stdlib/lib/puppet/parser/functions/merge.rb +++ b/3rdparty/modules/stdlib/lib/puppet/parser/functions/merge.rb @@ -1,28 +1,34 @@ +# +# merge.rb +# module Puppet::Parser::Functions - newfunction(:merge, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args| - Merges two or more hashes together and returns the resulting hash. + newfunction(:merge, :type => :rvalue, :doc => <<-'DOC') do |args| + @summary + Merges two or more hashes together and returns the resulting hash. - For example: - - $hash1 = {'one' => 1, 'two', => 2} - $hash2 = {'two' => 'dos', 'three', => 'tres'} - $merged_hash = merge($hash1, $hash2) - # The resulting hash is equivalent to: - # $merged_hash = {'one' => 1, 'two' => 'dos', 'three' => 'tres'} + @example **Usage** + $hash1 = {'one' => 1, 'two', => 2} + $hash2 = {'two' => 'dos', 'three', => 'tres'} + $merged_hash = merge($hash1, $hash2) # $merged_hash = {'one' => 1, 'two' => 'dos', 'three' => 'tres'} When there is a duplicate key, the key in the rightmost hash will "win." - ENDHEREDOC + @return [Hash] + The merged hash + + Note that since Puppet 4.0.0 the same merge can be achieved with the + operator. + `$merged_hash = $hash1 + $hash2` + DOC if args.length < 2 - raise Puppet::ParseError, ("merge(): wrong number of arguments (#{args.length}; must be at least 2)") + raise Puppet::ParseError, "merge(): wrong number of arguments (#{args.length}; must be at least 2)" end # The hash we accumulate into - accumulator = Hash.new + accumulator = {} # Merge into the accumulator hash args.each do |arg| - next if arg.is_a? String and arg.empty? # empty string is synonym for puppet's undef + next if arg.is_a?(String) && arg.empty? # empty string is synonym for puppet's undef unless arg.is_a?(Hash) raise Puppet::ParseError, "merge: unexpected argument type #{arg.class}, only expects hash arguments" end