puppetlabs-stdlib/lib/puppet/parser/functions/upcase.rb
Dan Offord 939aceffad Fix documentation error in upcase
The documentation example shows an incorrect response when using the
function, this PR corrects the example to agree with what the function
actually does.
2015-07-20 18:00:09 +01:00

45 lines
1.1 KiB
Ruby

#
# upcase.rb
#
module Puppet::Parser::Functions
newfunction(:upcase, :type => :rvalue, :doc => <<-EOS
Converts a string or an array of strings to uppercase.
*Examples:*
upcase("abcd")
Will return:
ABCD
EOS
) do |arguments|
raise(Puppet::ParseError, "upcase(): Wrong number of arguments " +
"given (#{arguments.size} for 1)") if arguments.size != 1
value = arguments[0]
unless value.is_a?(Array) || value.is_a?(Hash) || value.respond_to?(:upcase)
raise(Puppet::ParseError, 'upcase(): Requires an ' +
'array, hash or object that responds to upcase in order to work')
end
if value.is_a?(Array)
# Numbers in Puppet are often string-encoded which is troublesome ...
result = value.collect { |i| function_upcase([i]) }
elsif value.is_a?(Hash)
result = {}
value.each_pair do |k, v|
result[function_upcase([k])] = function_upcase([v])
end
else
result = value.upcase
end
return result
end
end
# vim: set ts=2 sw=2 et :