Mentre la versione 1.8.7 sembra avere una versione backported di Shellwords::shellescape
, so che il metodo è una funzionalità 1.9 e sicuramente non è supportato nelle versioni precedenti di 1.8. Qualcuno sa dove posso trovare, sia in forma di Gemma o semplicemente come uno snippet, una solida implementazione standalone del comando di escape Bourne-shell per Ruby?Implementazione di shellwords.shellescape per Ruby 1.8
5
A
risposta
5
finii per andare con il Escape gemma, che ha l'ulteriore funzionalità di utilizzare le virgolette per impostazione predefinita e solo escape backslash quando necessario.
9
Si potrebbe anche solo copiare quello che si desidera da shellwords.rb nel bagagliaio della repository subversion di Ruby (che è 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
Problemi correlati
- 1. Supporto della sintassi hash di Ruby 1.9 in Ruby 1.8
- 2. Passeggero Phusion con Ruby 1.8 e 1.9?
- 3. Rsync: implementazione pura di Ruby?
- 4. Conversione semplice di stringa in UTF-8 in Ruby 1.8
- 5. albero binario implementazione in Ruby
- 6. Qual è il significato per i programmatori di Ruby della nuova implementazione di SAP di Ruby?
- 7. Implementazione del pattern produttore-consumatore in Ruby
- 8. Implementazione della crittografia gpg in Ruby
- 9. Implementazione di una barriera di sincronizzazione in Ruby
- 10. Do Ruby 1.8 e 1.9 hanno lo stesso codice hash per una stringa?
- 11. Flexslider 1.8 vai all'elemento
- 12. Differenza di lunghezza delle stringhe tra rubino 1.8 e 1.9
- 13. Aggiornamento TortoiseSVN 1.8 numeri
- 14. implementazione di base Instagram
- 15. Esercizi consigliati per l'uso di import_module in django> = 1.8
- 16. Implementazione di Hashtable per C
- 17. Implementazione della ricerca in un'applicazione Ruby on Rails 3?
- 18. Django 1.8, Tipi di utenti multipli personalizzati
- 19. Uso di dojo 1.8 con requirejs
- 20. Difficoltà durante l'apprendimento di Zend Framework 1.8
- 21. Couchbase 2.0 vs Couchbase 1.8?
- 22. Crea un menu jQueryUI 1.8
- 23. Convertire una stringa Unicode sfuggito ai suoi caratteri in Ruby 1.8
- 24. jQuery 1.8 trova gestori di eventi
- 25. Implementazione GZIPInputStream per J2ME
- 26. Java 1.8 con Mockito 1.9.5 fornisce errori di compilazione
- 27. Errore di remove_entry_secure durante l'utilizzo dell'applicazione ruby
- 28. Implementazione di Capistrano 3 per conflitti tra binstub Rails 4?
- 29. Bad descrittore di file in Ruby Demoni
- 30. ruby excel reader, foglio di calcolo gemma
Grazie! Ho finito con la gemma di fuga (vedi la mia risposta); ma questa è sicuramente un'opzione praticabile. BTW, Ruby ha una doppia licenza in base al file che hai collegato. – Avdi
Per quanto riguarda le licenze, uno snippet di questo tipo è equo (http://en.wikipedia.org/wiki/Fair_use) comunque. Come afferma la FSF (http://www.gnu.org/prep/maintain/maintain.html#Legally-Significant): "solo poche righe (meno di 15 o così) non sono legalmente significative per il copyright." –