mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Initial revision
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3db12e8b23
commit
62e41d3f2e
56 changed files with 13850 additions and 0 deletions
48
lib/shellwords.rb
Normal file
48
lib/shellwords.rb
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# shellwords.rb
|
||||
# original is shellwords.pl
|
||||
#
|
||||
# Usage:
|
||||
# require 'shellwords.rb'
|
||||
# words = Shellwords.shellwords(line)
|
||||
#
|
||||
# or
|
||||
#
|
||||
# include Shellwords
|
||||
# words = shellwords(line)
|
||||
|
||||
module Shellwords
|
||||
def shellwords(line)
|
||||
return '' unless line
|
||||
line.sub! /^\s+/, ''
|
||||
words = []
|
||||
while line != ''
|
||||
field = ''
|
||||
while TRUE
|
||||
if line.sub! /^"(([^"\\]|\\.)*)"/, '' then
|
||||
snippet = $1
|
||||
snippet.gsub! /\\(.)/, '\1'
|
||||
elsif line =~ /^"/ then
|
||||
STDOUT.print "Unmatched double quote: $_\n"
|
||||
exit
|
||||
elsif line.sub! /^'(([^'\\]|\\.)*)'/, '' then
|
||||
snippet = $1
|
||||
snippet.gsub! /\\(.)/, '\1'
|
||||
elsif line =~ /^'/ then
|
||||
STDOUT.print "Unmatched single quote: $_\n"
|
||||
exit
|
||||
elsif line.sub! /^\\(.)/, '' then
|
||||
snippet = $1
|
||||
elsif line.sub! /^([^\s\\'"]+)/, '' then
|
||||
snippet = $1
|
||||
else
|
||||
line.sub! /^\s+/, ''
|
||||
break
|
||||
end
|
||||
field += snippet
|
||||
end
|
||||
words += field
|
||||
end
|
||||
words
|
||||
end
|
||||
module_function :shellwords
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue