41baef8502
The previous commit to uriescape() changed the implementation to use the ruby default escape list for URI.escape(), but did not change the call triggered when uriescape() was called on an array, triggering ruby errors.
34 lines
874 B
Ruby
34 lines
874 B
Ruby
#
|
|
# uriescape.rb
|
|
#
|
|
require 'uri'
|
|
|
|
module Puppet::Parser::Functions
|
|
newfunction(:uriescape, :type => :rvalue, :doc => <<-EOS
|
|
Urlencodes a string or array of strings.
|
|
Requires either a single string or an array as an input.
|
|
EOS
|
|
) do |arguments|
|
|
|
|
raise(Puppet::ParseError, "uriescape(): Wrong number of arguments " +
|
|
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
|
|
value = arguments[0]
|
|
|
|
unless value.is_a?(Array) || value.is_a?(String)
|
|
raise(Puppet::ParseError, 'uriescape(): Requires either ' +
|
|
'array or string to work with')
|
|
end
|
|
|
|
if value.is_a?(Array)
|
|
# Numbers in Puppet are often string-encoded which is troublesome ...
|
|
result = value.collect { |i| i.is_a?(String) ? URI.escape(i) : i }
|
|
else
|
|
result = URI.escape(value)
|
|
end
|
|
|
|
return result
|
|
end
|
|
end
|
|
|
|
# vim: set ts=2 sw=2 et :
|