Sha256: 13934771b0330feb5509f2afd06014e4e6b3ece4369feb507457539919b48848

Contents?: true

Size: 808 Bytes

Versions: 15

Compression:

Stored size: 808 Bytes

Contents

# Polyfill for the shellwords library on Ruby 1.8.5.

require 'shellwords'

if !Shellwords.respond_to?(:escape)
	Shellwords.class_eval do
		def self.escape(str)
			# An empty argument will be skipped, so return empty quotes.
			return "''" if str.empty?
			str = str.dup
			# Treat multibyte characters as is.  It is caller's responsibility
			# to encode the string in the right encoding for the shell
			# environment.
			str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/, "\\\\\\1")
			# A LF cannot be escaped with a backslash because a backslash + LF
			# combo is regarded as line continuation and simply ignored.
			str.gsub!(/\n/, "'\n'")
			return str
		end
	end
end

if !Shellwords.respond_to?(:join)
	Shellwords.class_eval do
		def self.join(array)
			array.map { |arg| escape(arg) }.join(' ')
		end
	end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
passenger-4.0.60 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.59 lib/phusion_passenger/utils/shellwords.rb
passenger-5.0.0.beta3 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.58 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.57 lib/phusion_passenger/utils/shellwords.rb
passenger-5.0.0.beta2 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.56 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.55 lib/phusion_passenger/utils/shellwords.rb
passenger-5.0.0.beta1 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.53 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.52 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.51 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.50 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.49 lib/phusion_passenger/utils/shellwords.rb
passenger-4.0.48 lib/phusion_passenger/utils/shellwords.rb