Mientras que la compilación de 1.8.7 que tengo parece tener una versión backported de Shellwords::shellescape
, sé que el método es una característica 1.9 y definitivamente no es compatible con las versiones anteriores de 1.8. ¿Alguien sabe dónde puedo encontrar, ya sea en forma de gema o simplemente como un fragmento, una implementación independiente robusta del comando Bourne-shell escapándose para Ruby?Shellwords.shellescape implementación para Ruby 1.8
5
A
Respuesta
5
terminé yendo con la Escape joya, que tiene el adicional característica del uso de comillas por defecto, y solo barra invertida, escapando cuando sea necesario.
9
Es lo mismo que acaba de copiar lo que quiere de shellwords.rb en el maletero del depósito de la 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
Cuestiones relacionadas
- 1. Ruby 1.9 más lento que Ruby 1.8?
- 2. Phusion Passenger con Ruby 1.8 y 1.9?
- 3. Conversión simple de cadena a UTF-8 en Ruby 1.8
- 4. Compatible con la sintaxis hash de Ruby 1.9 en Ruby 1.8
- 5. JQuery UI Autocompletar (1.8) desplazamiento
- 6. Flexslider 1.8 ir al artículo
- 7. Ejemplo Zend Framework Project 1.8+
- 8. Implementación de Ruby is_numeric? para cadenas, necesita mejores alternativas
- 9. ¿Cómo puedo convertir a Ruby 1.8 en personajes secundarios no latinos?
- 10. ¿Cuáles son los 3 tipos de JavaDocs para Groovy 1.8?
- 11. Implementación del algoritmo de Luhn en Ruby
- 12. ¿Hay una implementación de bolsa en Ruby?
- 13. ¿Versión predeterminada de Ruby en OSX Lion? Aún 1.8.xo 1.9.x?
- 14. Convertir una cadena Unicode escapado a sus caracteres en Ruby 1.8
- 15. Crear un menú jQueryUI 1.8 Button
- 16. Presentamos cierres de JDK 1.8 - Proyecto Lambda
- 17. Dificultades al aprender Zend Framework 1.8
- 18. jQuery 1.8 encontrar controladores de eventos
- 19. Deshabilitar la generación de rdoc y ri de forma predeterminada para rubygems 1.8.x
- 20. Sustitución de implementación de tiempo de ejecución con Ruby
- 21. ¿Debe una implementación "==" en Ruby verificar el tipo?
- 22. Implementación mkstemp() para win32
- 23. ¿Cuál es el significado para los programadores de Ruby de la nueva implementación de SAP de Ruby?
- 24. Árbol de implementación y otra estructura de datos con ruby
- 25. implementación de mensajería instantánea para rieles?
- 26. Error al reiniciar Thin para mi aplicación Ruby on Rails
- 27. ¿Es posible actualizar Subclipse a 1.8 sin perder el trabajo?
- 28. Obtener inf-ruby para usar ruby version manager (rvm)
- 29. JQuery 1.5 breaks Compare Validate (JQuery Validate 1.8)
- 30. ¿Ruby 1.9.1 está realmente listo y es más rápido para una nueva implementación de Rails?
Gracias! Terminé yendo con la gema Escape (ver mi respuesta); pero esta es definitivamente una opción viable. Por cierto, Ruby tiene doble licencia según el archivo que vinculó. – Avdi
Con respecto a la licencia, un fragmento de este pequeño es de uso legítimo (http://en.wikipedia.org/wiki/Fair_use) de todos modos. Como afirma el FSF (http://www.gnu.org/prep/maintain/maintain.html#Legally-Significant): "solo unas pocas líneas (menos de 15 o más) no son legalmente significativas para los derechos de autor". –