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@2 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
392296c12d
commit
3db12e8b23
225 changed files with 75935 additions and 0 deletions
84
lib/parsearg.rb
Normal file
84
lib/parsearg.rb
Normal file
|
@ -0,0 +1,84 @@
|
|||
#!/usr/local/bin/ruby
|
||||
#
|
||||
# parsearg.rb - parse arguments
|
||||
# $Release Version: $
|
||||
# $Revision$
|
||||
# $Date$
|
||||
# by Yasuo OHBA(SHL Japan Inc. Technology Dept.)
|
||||
#
|
||||
# --
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
$RCS_ID="$Header$"
|
||||
|
||||
load("getopts.rb")
|
||||
|
||||
def printUsageAndExit()
|
||||
if $USAGE
|
||||
eval($USAGE)
|
||||
end
|
||||
exit()
|
||||
end
|
||||
|
||||
def setParenthesis(ex, opt, c)
|
||||
if opt != ""
|
||||
ex = sprintf("%s$OPT_%s%s", ex, opt, c)
|
||||
else
|
||||
ex = sprintf("%s%s", ex, c)
|
||||
end
|
||||
return ex
|
||||
end
|
||||
|
||||
def setOrAnd(ex, opt, c)
|
||||
if opt != ""
|
||||
ex = sprintf("%s$OPT_%s %s%s ", ex, opt, c, c)
|
||||
else
|
||||
ex = sprintf("%s %s%s ", ex, c, c)
|
||||
end
|
||||
return ex
|
||||
end
|
||||
|
||||
def setExpression(ex, opt, op)
|
||||
if !op
|
||||
ex = sprintf("%s$OPT_%s", ex, opt)
|
||||
return ex
|
||||
end
|
||||
case op.chr
|
||||
when "(", ")"
|
||||
ex = setParenthesis(ex, opt, op.chr)
|
||||
when "|", "&"
|
||||
ex = setOrAnd(ex, opt, op.chr)
|
||||
else
|
||||
return nil
|
||||
end
|
||||
return ex
|
||||
end
|
||||
|
||||
def parseArgs(argc, nopt, single_opts, *opts)
|
||||
if (noOptions = getopts(single_opts, *opts)) == nil
|
||||
printUsageAndExit()
|
||||
end
|
||||
if nopt
|
||||
ex = nil
|
||||
pos = 0
|
||||
for o in nopt.split(/[()|&]/)
|
||||
pos += o.length
|
||||
ex = setExpression(ex, o, nopt[pos])
|
||||
pos += 1
|
||||
end
|
||||
begin
|
||||
if !eval(ex)
|
||||
printUsageAndExit()
|
||||
end
|
||||
rescue
|
||||
print "Format Error!! : \"" + nopt + "\"\t[parseArgs]\n"
|
||||
exit! -1
|
||||
end
|
||||
end
|
||||
if ARGV.length < argc
|
||||
printUsageAndExit()
|
||||
end
|
||||
return noOptions
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue