source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/getopts.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 2.3 KB
Line 
1#
2# getopts.rb -
3# $Release Version: $
4# $Revision: 11708 $
5# $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
6# by Yasuo OHBA(SHL Japan Inc. Technology Dept.)
7#
8# --
9# this is obsolete; use getoptlong
10#
11# 2000-03-21
12# modified by Minero Aoki <[email protected]>
13#
14# 2002-03-05
15# rewritten by Akinori MUSHA <[email protected]>
16#
17
18warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: getopts is deprecated after Ruby 1.8.1; use optparse instead" if caller[0] and $VERBOSE
19
20$RCS_ID=%q$Header$
21
22# getopts is obsolete. Use GetoptLong.
23
24def getopts(single_options, *options)
25 boolopts = {}
26 valopts = {}
27
28 #
29 # set defaults
30 #
31 single_options.scan(/.:?/) do |opt|
32 if opt.size == 1
33 boolopts[opt] = false
34 else
35 valopts[opt[0, 1]] = nil
36 end
37 end if single_options
38
39 options.each do |arg|
40 opt, val = arg.split(':', 2)
41
42 if val
43 valopts[opt] = val.empty? ? nil : val
44 else
45 boolopts[opt] = false
46 end
47 end
48
49 #
50 # scan
51 #
52 c = 0
53 argv = ARGV
54
55 while arg = argv.shift
56 case arg
57 when /\A--(.*)/
58 if $1.empty? # xinit -- -bpp 24
59 break
60 end
61
62 opt, val = $1.split('=', 2)
63
64 if opt.size == 1
65 argv.unshift arg
66 return nil
67 elsif valopts.key? opt # imclean --src +trash
68 valopts[opt] = val || argv.shift or return nil
69 elsif boolopts.key? opt # ruby --verbose
70 boolopts[opt] = true
71 else
72 argv.unshift arg
73 return nil
74 end
75
76 c += 1
77 when /\A-(.+)/
78 opts = $1
79
80 until opts.empty?
81 opt = opts.slice!(0, 1)
82
83 if valopts.key? opt
84 val = opts
85
86 if val.empty? # ruby -e 'p $:'
87 valopts[opt] = argv.shift or return nil
88 else # cc -ohello ...
89 valopts[opt] = val
90 end
91
92 c += 1
93 break
94 elsif boolopts.key? opt
95 boolopts[opt] = true # ruby -h
96 c += 1
97 else
98 argv.unshift arg
99 return nil
100 end
101 end
102 else
103 argv.unshift arg
104 break
105 end
106 end
107
108 #
109 # set
110 #
111 $OPT = {}
112
113 boolopts.each do |opt, val|
114 $OPT[opt] = val
115
116 sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
117 eval "$OPT_#{sopt} = val"
118 end
119 valopts.each do |opt, val|
120 $OPT[opt] = val
121
122 sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
123 eval "$OPT_#{sopt} = val"
124 end
125
126 c
127end
Note: See TracBrowser for help on using the repository browser.