Podczas kompilacji wersji 1.8.7 wydaje mi się, że mam przeniesioną wersję Shellwords::shellescape
, wiem, że ta metoda jest funkcją 1.9 i zdecydowanie nie jest obsługiwana we wcześniejszych wersjach wersji 1.8. Czy ktokolwiek wie, gdzie mogę znaleźć, albo w postaci Gem, albo po prostu jako fragment, solidną, samodzielną implementację polecenia Bourne-shell uciekającego dla Ruby?Implementacja Shellwords.shellescape dla Ruby 1.8
5
A
Odpowiedz
5
I skończyłem dzieje z Escape gem, który ma dodatkowy funkcja domyślnego używania cudzysłowów, aw razie potrzeby tylko odwrotny ukośnik.
9
Równie dobrze można po prostu skopiować to, co chcesz z shellwords.rb w bagażniku Subversion repozytorium Ruby (co jest 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
Powiązane problemy
- 1. Jak utworzyć Ruby 1.8 dla znaków spoza alfabetu łacińskiego?
- 2. Obsługa składni skrótu Rubiego w Ruby 1.8
- 3. Pasażer Phusion z Ruby 1.8 i 1.9?
- 4. implementacja komunikatora internetowego dla szyn?
- 5. Implementacja hashtable dla C
- 6. Implementacja GZIPInputStream dla J2ME
- 7. Implementacja C# dla JVM
- 8. Implementacja "show" dla funkcji
- 9. Czy Ruby 1.8 i 1.9 mają ten sam kod skrótu dla ciągu znaków?
- 10. Ograniczenia Ruby dla Ruby
- 11. Implementacja layoutu dla Dojo MVC
- 12. Implementacja klienta SAML dla Androida?
- 13. Implementacja kolejki zadań dla Pythona
- 14. Implementacja dla wszystkich klas BsonIgnoreExtraElements
- 15. Implementacja dla CombineFileInputFormat Hadoop 0.20.205
- 16. Implementacja Hashtable dla Delphi 5
- 17. Implementacja interfejsu INamingContainer dla UpdatePanel?
- 18. Implementacja operatora konwersji dla wskaźnika
- 19. Azure SDK 1.8 CloudDrive
- 20. Uaktualnienie wersji TortoiseSVN 1.8
- 21. Couchbase 2.0 vs Couchbase 1.8?
- 22. Czy istnieje Asynchronous Logging Library dla Ruby?
- 23. Jakie są 3 typy JavaDocs dla Groovy 1.8?
- 24. Lepsza implementacja Ruby rundy dziesiętnej do najbliższej 0.5
- 25. Implementacja strategii Re-connect przy użyciu sieci Ruby
- 26. Błąd przy restarcie Thin dla mojej aplikacji Ruby on Rails
- 27. Flexslider 1.8 przejdź do punktu
- 28. Django 1.8 Uruchom konkretną migrację
- 29. Konwersja wyraz Scala Java 1.8
- 30. Implementacja protokołu Bittorrent
Dzięki! Skończyłem z klejnotem Escape (zobacz moją odpowiedź); ale jest to z pewnością realna opcja. BTW, Ruby jest podwójnie licencjonowana zgodnie z plikiem, który łączyłeś. – Avdi
W związku z licencjonowaniem, tak czy inaczej, ten fragment jest dozwolony (http://en.wikipedia.org/wiki/Fair_use). Jak podaje FSF (http://www.gnu.org/prep/maintain/maintain.html#Legally-Significant): "tylko kilka linii (mniej niż 15) nie ma prawnego znaczenia dla praw autorskich". –