Shellwords.shellescape aplicación para Ruby 1.8
Pregunta
Mientras que la acumulación de 1.8.7 Tengo parece tener una versión portado de Shellwords::shellescape
, sé que el método es una característica 1,9 y definitivamente no es compatible con versiones anteriores de 1,8. ¿Alguien sabe donde puedo encontrar, ya sea en forma de joya o simplemente como un fragmento, una aplicación independiente robusta de comandos Bourne shell-escape para Ruby?
Solución 2
terminé yendo con la escape gema, que tiene la característica adicional del uso de cotizaciones de forma predeterminada y sólo barra invertida-escapar cuando sea necesario.
Otros consejos
Es posible que también acaba de copiar lo que quiere de href="http://svn.ruby-lang.org/repos/ruby/trunk/lib/shellwords.rb". rb en el maletero de repositorio de subversión de Ruby (que es GPLv2 'd):
def shellescape(str)
# An empty argument will be skipped, so return empty quotes.
return "''" if str.empty?
str = str.dup
# Process as a single byte sequence because not all shell
# implementations are multibyte aware.
str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/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