* lib/shellwords.rb (Shellwords#shellescape): shellescape() now
stringifies the given object using to_s. * lib/shellwords.rb (Shellwords#shelljoin): shelljoin() accepts non-string objects in the given array, each of which is stringified using to_s. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c100aeb838
commit
d00fe54803
@ -1,5 +1,12 @@
|
|||||||
Fri Jan 13 03:46:53 2012 Akinori MUSHA <knu@iDaemons.org>
|
Fri Jan 13 03:46:53 2012 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
|
* lib/shellwords.rb (Shellwords#shellescape): shellescape() now
|
||||||
|
stringifies the given object using to_s.
|
||||||
|
|
||||||
|
* lib/shellwords.rb (Shellwords#shelljoin): shelljoin() accepts
|
||||||
|
non-string objects in the given array, each of which is
|
||||||
|
stringified using to_s.
|
||||||
|
|
||||||
* lib/shellwords.rb: Fix rdoc markups.
|
* lib/shellwords.rb: Fix rdoc markups.
|
||||||
|
|
||||||
Fri Jan 13 03:38:36 2012 Akinori MUSHA <knu@iDaemons.org>
|
Fri Jan 13 03:38:36 2012 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
5
NEWS
5
NEWS
@ -55,6 +55,11 @@ with all sufficient information, see the ChangeLog file.
|
|||||||
* Resolv::DNS#timeouts=
|
* Resolv::DNS#timeouts=
|
||||||
* Resolv::DNS::Config#timeouts=
|
* Resolv::DNS::Config#timeouts=
|
||||||
|
|
||||||
|
* shellwords
|
||||||
|
* Shellwords#shellescape() now stringifies the given object using to_s.
|
||||||
|
* Shellwords#shelljoin() accepts non-string objects in the given
|
||||||
|
array, each of which is stringified using to_s.
|
||||||
|
|
||||||
=== Language changes
|
=== Language changes
|
||||||
=== Compatibility issues (excluding feature bug fixes)
|
=== Compatibility issues (excluding feature bug fixes)
|
||||||
|
|
||||||
|
@ -57,7 +57,8 @@ module Shellwords
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Escapes a string so that it can be safely used in a Bourne shell
|
# Escapes a string so that it can be safely used in a Bourne shell
|
||||||
# command line.
|
# command line. +str+ can be a non-string object that responds to
|
||||||
|
# +to_s+.
|
||||||
#
|
#
|
||||||
# Note that a resulted string should be used unquoted and is not
|
# Note that a resulted string should be used unquoted and is not
|
||||||
# intended for use in double quotes nor in single quotes.
|
# intended for use in double quotes nor in single quotes.
|
||||||
@ -77,6 +78,8 @@ module Shellwords
|
|||||||
# Multibyte characters are treated as multibyte characters, not
|
# Multibyte characters are treated as multibyte characters, not
|
||||||
# bytes.
|
# bytes.
|
||||||
def shellescape(str)
|
def shellescape(str)
|
||||||
|
str = str.to_s
|
||||||
|
|
||||||
# An empty argument will be skipped, so return empty quotes.
|
# An empty argument will be skipped, so return empty quotes.
|
||||||
return "''" if str.empty?
|
return "''" if str.empty?
|
||||||
|
|
||||||
@ -101,7 +104,9 @@ module Shellwords
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Builds a command line string from an argument list +array+ joining
|
# Builds a command line string from an argument list +array+ joining
|
||||||
# all elements escaped for Bourne shell and separated by a space.
|
# all elements escaped for Bourne shell into a single string with
|
||||||
|
# fields separated by a space, where each element is stringified
|
||||||
|
# using +to_s+.
|
||||||
#
|
#
|
||||||
# open('|' + Shellwords.join(['grep', pattern, *files])) { |pipe|
|
# open('|' + Shellwords.join(['grep', pattern, *files])) { |pipe|
|
||||||
# # ...
|
# # ...
|
||||||
@ -113,6 +118,11 @@ module Shellwords
|
|||||||
# # ...
|
# # ...
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
|
# It is allowed to mix non-string objects in the elements as allowed
|
||||||
|
# in Array#join.
|
||||||
|
#
|
||||||
|
# output = `#{['ps', '-p', $$].shelljoin}`
|
||||||
|
#
|
||||||
def shelljoin(array)
|
def shelljoin(array)
|
||||||
array.map { |arg| shellescape(arg) }.join(' ')
|
array.map { |arg| shellescape(arg) }.join(' ')
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user