diff options
Diffstat (limited to 'sample/getopts.rb')
-rw-r--r-- | sample/getopts.rb | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/sample/getopts.rb b/sample/getopts.rb deleted file mode 100644 index 37fd3dc69d..0000000000 --- a/sample/getopts.rb +++ /dev/null @@ -1,117 +0,0 @@ -# -# getopts.rb - get options -# $Release Version: $ -# $Revision: 1.2 $ -# $Date: 1994/02/15 05:17:15 $ -# by Yasuo OHBA(STAFS Development Room) -# -# -- -# オプションの解析をし, $OPT_?? に値をセットします. -# 指定のないオプションが指定された時は nil を返します. -# 正常終了した場合は, セットされたオプションの数を返します. -# -# getopts(single_opts, *opts) -# -# ex. sample [options] filename -# options ... -# -f -x --version --geometry 100x200 -d unix:0.0 -# ↓ -# getopts("fx", "version", "geometry:", "d:") -# -# 第一引数: -# -f や -x (= -fx) の様な一文字のオプションの指定をします. -# ここで引数がないときは nil の指定が必要です. -# 第二引数以降: -# ロングネームのオプションや, 引数の伴うオプションの指定をします. -# --version や, --geometry 300x400 や, -d host:0.0 等です. -# 引数を伴う指定は ":" を必ず付けてください. -# -# オプションの指定があった場合, 変数 $OPT_?? に non-nil もしくは, そのオ -# プションの引数がセットされます. -# -f -> $OPT_f = TRUE -# --geometry 300x400 -> $OPT_geometry = 300x400 -# -# - もしくは -- は, それ以降, 全てオプションの解析をしません. -# - -$RCS_ID="$Header: /var/ohba/RCS/getopts.rb,v 1.2 1994/02/15 05:17:15 ohba Exp ohba $" - -def getopts(single_opts, *opts) - if (opts) - single_colon = "" - long_opts = [] - sc = 0 - for option in opts - if (option.length <= 2) - single_colon[sc, 0] = option[0, 1] - sc += 1 - else - long_opts.push(option) - end - end - end - - opts = {} - count = 0 - while ($ARGV.length != 0) - compare = nil - case $ARGV[0] - when /^--?$/ - $ARGV.shift - break - when /^--.*/ - compare = $ARGV[0][2, ($ARGV[0].length - 2)] - if (long_opts != "") - for option in long_opts - if (option[(option.length - 1), 1] == ":" && - option[0, (option.length - 1)] == compare) - if ($ARGV.length <= 1) - return nil - end - eval("$OPT_" + compare + " = " + '$ARGV[1]') - opts[compare] = TRUE - $ARGV.shift - count += 1 - break - elsif (option == compare) - eval("$OPT_" + compare + " = TRUE") - opts[compare] = TRUE - count += 1 - break - end - end - end - when /^-.*/ - for index in 1..($ARGV[0].length - 1) - compare = $ARGV[0][index, 1] - if (single_opts && compare =~ "[" + single_opts + "]") - eval("$OPT_" + compare + " = TRUE") - opts[compare] = TRUE - count += 1 - elsif (single_colon != "" && compare =~ "[" + single_colon + "]") - if ($ARGV[0][index..-1].length > 1) - eval("$OPT_" + compare + " = " + '$ARGV[0][(index + 1)..-1]') - opts[compare] = TRUE - count += 1 - elsif ($ARGV.length <= 1) - return nil - else - eval("$OPT_" + compare + " = " + '$ARGV[1]') - opts[compare] = TRUE - $ARGV.shift - count = count + 1 - end - break - end - end - else - break - end - - $ARGV.shift - if (!opts.includes(compare)) - return nil - end - end - return count -end |