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
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". –