Replace concat.rb with latest stdlib equivalent

Sync concat puppet function to fix some bugs

Related-Bug: #1320184
Related-Bug: #1321284

Change-Id: I49a614122469b37b1c4eb2fbc29b0877a4427fbd
This commit is contained in:
Sergii Golovatiuk 2014-05-21 14:34:49 +00:00 committed by Vladimir Kuklin
parent 3d92142a56
commit 71b112d844
2 changed files with 41 additions and 17 deletions

View File

@ -1,17 +0,0 @@
# concat.rb
# concatenate the contents of arrays
# Use it like this:
# $base_metrics = ['a', 'b']
# $extended_metrics = ['c']
# $metrics = concat($base_metrics, $extended_metrics)
module Puppet::Parser::Functions
newfunction(:concat, :type => :rvalue) do |args|
result = []
args.each do |arg|
result = result.concat(arg)
end
result
end
end

View File

@ -0,0 +1,41 @@
#
# concat.rb
#
module Puppet::Parser::Functions
newfunction(:concat, :type => :rvalue, :doc => <<-EOS
Appends the contents of array 2 onto array 1.
*Example:*
concat(['1','2','3'],['4','5','6'])
Would result in:
['1','2','3','4','5','6']
EOS
) do |arguments|
# Check that 2 arguments have been given ...
raise(Puppet::ParseError, "concat(): Wrong number of arguments " +
"given (#{arguments.size} for 2)") if arguments.size != 2
a = arguments[0]
b = arguments[1]
# Check that the first parameter is an array
unless a.is_a?(Array)
raise(Puppet::ParseError, 'concat(): Requires array to work with')
end
if b.is_a?(Array)
result = a.concat(b)
else
result = a << b
end
return result
end
end
# vim: set ts=2 sw=2 et :