Puppet Function: uriescape
- Defined in:
- lib/puppet/parser/functions/uriescape.rb
- Function type:
- Ruby 3.x API
Summary
Urlencodes a string or array of strings. Requires either a single string or an array as an input.Overview
> Note: Deprecated: Starting Puppet 8, our Ruby version has upgraded to 3.2. Therefore, its no longer possible to call URI.escape as it was deprecated by 2.7 and removed completely by 3+. This function should be removed once Puppet 7 is no longer supported.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/puppet/parser/functions/uriescape.rb', line 10 newfunction(:uriescape, type: :rvalue, doc: <<-DOC @summary Urlencodes a string or array of strings. Requires either a single string or an array as an input. @return [String] a string that contains the converted value > **Note:** **Deprecated:** Starting Puppet 8, our Ruby version has upgraded to 3.2. Therefore, its no longer possible to call URI.escape as it was deprecated by 2.7 and removed completely by 3+. This function should be removed once Puppet 7 is no longer supported. DOC ) do |arguments| raise(Puppet::ParseError, 'Puppet: This function is not available in Puppet 8. URI.escape no longer exists as of Ruby 3+.') if Puppet::Util::Package.versioncmp(Puppet.version, '8').positive? raise(Puppet::ParseError, "uriescape(): Wrong number of arguments given (#{arguments.size} for 1)") if arguments.empty? value = arguments[0] raise(Puppet::ParseError, 'uriescape(): Requires either array or string to work with') unless value.is_a?(Array) || value.is_a?(String) result = if value.is_a?(Array) # Numbers in Puppet are often string-encoded which is troublesome ... value.map { |i| i.is_a?(String) ? URI::DEFAULT_PARSER.escape(i) : i } else URI::DEFAULT_PARSER.escape(value) end return result end |