Usage 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ #
2
+ # This is the simplist usage case (only required args)
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "infile outfile"
7
+
8
+ puts "infile = #{usage.infile.inspect}"
9
+ puts "outfile = #{usage.outfile.inspect}"
@@ -0,0 +1,9 @@
1
+ #
2
+ # This is illustrates handling infinite arguments
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "outfile infiles..."
7
+
8
+ puts "outfile = #{usage.outfile.inspect}"
9
+ puts "infiles = #{usage.infiles.inspect}"
@@ -0,0 +1,14 @@
1
+ #
2
+ # This illustrates the use of optional arguments. This program can
3
+ # handle 1 or 2 arguments. If there is one, then #optional_arg returns
4
+ # nil and #required_arg returns the argument. If there is two then
5
+ # #optional_arg returns the first argument and #required_arg returns the
6
+ # second.
7
+ #
8
+ require "Usage"
9
+
10
+ usage = Usage.new "required_arg [optional_arg] "
11
+
12
+ puts "required arg = #{usage.required_arg.inspect}"
13
+ puts "optional arg = #{usage.optional_arg.inspect}"
14
+
@@ -0,0 +1,21 @@
1
+ #
2
+ # This demonstrates both optional and required options. The ones surrounded by
3
+ # square brackets are optional and their arguments are included with them. The
4
+ # ones surrounded with parenthesis are required options and the arguments that
5
+ # are in there are included with them.
6
+ #
7
+ # When the usage is reported to the user, the parenthesis are not included.
8
+ #
9
+
10
+ require "Usage"
11
+
12
+ usage = Usage.new "[-y] [-x excluded_tags] (-z ztag) (-w warning_arg) files..."
13
+
14
+ puts "dash_y = #{usage.dash_y.inspect}"
15
+ puts "dash_x = #{usage.dash_x.inspect}"
16
+ puts "excluded_tags = #{usage.excluded_tags.inspect}"
17
+ puts "dash_z = #{usage.dash_y.inspect}"
18
+ puts "ztag = #{usage.ztag.inspect}"
19
+ puts "dash_w = #{usage.dash_w.inspect}"
20
+ puts "warning = #{usage.warning.inspect}"
21
+ puts "files = #{usage.files.inspect}"
@@ -0,0 +1,13 @@
1
+ #
2
+ # This illustrates how to use long options (ie. --option)
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "-x files...", <<EOT
7
+ -x,--exclusive specifies exclusive access to the files
8
+ EOT
9
+
10
+ puts "dash_x = #{usage.dash_x.inspect}"
11
+ puts "exclusive = #{usage.exclusive.inspect}"
12
+ puts "files = #{usage.files.inspect}"
13
+
@@ -0,0 +1,11 @@
1
+ #
2
+ # This sample illustrates typed arguments. The argument that
3
+ # starts with % indicates and Integer and a @ indicates a
4
+ # date/time (a Time object is produced).
5
+ #
6
+ require "Usage"
7
+
8
+ usage = Usage.new "%num_times @on_date"
9
+
10
+ puts "usage.num_times = #{usage.num_times.inspect}"
11
+ puts "on_date = #{usage.on_date.inspect}"
@@ -0,0 +1,8 @@
1
+ #
2
+ # This sample shows how to use choice arguments
3
+ #
4
+ require "Usage"
5
+
6
+ usage = Usage.new "[-a coffee|tea|milk]"
7
+
8
+ puts "dash_a = #{usage.dash_a.inspect}"
data/tests/TC_Usage.rb ADDED
@@ -0,0 +1,303 @@
1
+ require "test/unit"
2
+ require "rubygems"
3
+ require_gem "SimpleTrace", "<= 0.1.0"
4
+ require "Usage"
5
+
6
+ class TC_Usage < Test::Unit::TestCase
7
+ def testTooFewArgs
8
+ # ------ Check for too few arguments -----------------
9
+ assert_raises(UsageMod::TooFewArgError) do
10
+ usage = UsageMod::Base.new("filename", "", []).parse_args
11
+ end
12
+ end
13
+
14
+ def testTooManyArgs
15
+ # ------ Check for too many arguments ----------------
16
+ #$TRACE.set_level 9
17
+ assert_raises(UsageMod::ExtraArgError) do
18
+ usage = UsageMod::Base.new("filename", "", ["arg1", "arg2"]).parse_args
19
+ end
20
+
21
+ assert_raises(UsageMod::ExtraArgError) do
22
+ usage = UsageMod::Base.new("", "", ["arg1"]).parse_args
23
+ end
24
+ end
25
+
26
+ def testRequiredArgs
27
+ # ------ Check for argument values ---------------------
28
+ usage = UsageMod::Base.new("filename", "", ["arg"]).parse_args
29
+ assert_equal("arg", usage.filename)
30
+
31
+ usage = UsageMod::Base.new("filename num_lines", "", ["arg1", "arg2"]).parse_args
32
+ assert_equal("arg1", usage.filename)
33
+ assert_equal("arg2", usage.num_lines)
34
+ end
35
+
36
+ def testInifiniteArgs
37
+ # ------ Check for infinite argument values ---------------------
38
+ usage = UsageMod::Base.new("num_lines files... ", "", ["1", "file1", "file2", "file3"]).parse_args
39
+ assert_equal("1", usage.num_lines)
40
+ assert_equal(["file1", "file2", "file3"], usage.files)
41
+ end
42
+
43
+ def testOptionalAndRequiredArgs1Arg
44
+ # ------ Check for argument values ---------------------
45
+ #$TRACE.set_level 9 do
46
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arg"]).parse_args
47
+ assert_equal("arg", usage.arg1)
48
+ assert_equal(nil, usage.arg2)
49
+ #end
50
+ end
51
+
52
+ def testOptionalAndRequiredArgs2Args
53
+ # ------ Check for argument values ---------------------
54
+ #$TRACE.set_level 9 do
55
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arga", "argb"]).parse_args
56
+ assert_equal("arga", usage.arg1)
57
+ assert_equal("argb", usage.arg2)
58
+ #end
59
+ end
60
+
61
+ def testOneOption
62
+ usage = UsageMod::Base.new("-m", "", ["-m"]).parse_args
63
+ assert_equal(true, usage.dash_m)
64
+ end
65
+
66
+ def testOneOptionAndOneArg
67
+ usage = UsageMod::Base.new("-m filename", "", ["-m", "test1.txt"]).parse_args
68
+ assert_equal(true, usage.dash_m)
69
+ assert_equal("test1.txt", usage.filename)
70
+ end
71
+
72
+ def testOptionWithDescription
73
+ usage = UsageMod::Base.new("-m", "-m,--merge-file\tMerge the files together", ["-m"]).parse_args
74
+ assert_equal(true, usage.merge_file)
75
+ assert_equal(true, usage.dash_m)
76
+ end
77
+
78
+ def testOptionWithDescriptionUsingLongOptionName
79
+ #$TRACE.set_level 9 do
80
+ usage = UsageMod::Base.new("-m", "-m,--merge-file\tMerge the files together", ["--merge-file"]).parse_args
81
+ assert_equal(true, usage.merge_file)
82
+ assert_equal(true, usage.dash_m)
83
+ #end
84
+ end
85
+
86
+ def testIntegerArg
87
+ #$TRACE.set_level 9 do
88
+ usage = UsageMod::Base.new("%value", "", ["12"]).parse_args
89
+ assert_equal(Fixnum, usage.value.class)
90
+ assert_equal(12, usage.value)
91
+ #end
92
+ end
93
+
94
+ def testBadIntegerArg
95
+ #$TRACE.set_level 9 do
96
+ assert_raises(UsageMod::InvalidIntegerError) do
97
+ usage = UsageMod::Base.new("%value", "", ["a"]).parse_args
98
+ end
99
+ #end
100
+ end
101
+
102
+ def testGoodTimeArg
103
+ #$TRACE.set_level 9 do
104
+ usage = UsageMod::Base.new("@value", "", ["3/10/2004-10:25"]).parse_args
105
+ assert_equal(Time, usage.value.class)
106
+ assert_equal(Time.local(2004,3,10,10,25), usage.value)
107
+ #end
108
+ end
109
+
110
+ def testBadTimeArg
111
+ #$TRACE.set_level 9 do
112
+ assert_raises(UsageMod::InvalidTimeError) do
113
+ usage = UsageMod::Base.new("@value", "", ["Barf"]).parse_args
114
+ end
115
+ #end
116
+ end
117
+
118
+ def testIntegerOptionArg
119
+ #$TRACE.set_level 9 do
120
+ usage = UsageMod::Base.new("(-w %value)", "", ["-w", "12"]).parse_args
121
+ assert_equal(Fixnum, usage.value.class)
122
+ assert_equal(12, usage.value)
123
+ #end
124
+ end
125
+
126
+ def testMissingOption
127
+ assert_raises(UsageMod::MissingOptionsError) do
128
+ usage = UsageMod::Base.new("-m", "", []).parse_args
129
+ end
130
+ end
131
+
132
+ def testMissingOptionAndOneArg
133
+ assert_raises(UsageMod::MissingOptionsError) do
134
+ usage = UsageMod::Base.new("-m", "", ["test1.txt"]).parse_args
135
+ end
136
+ end
137
+
138
+ def testUnknownOption
139
+ assert_raises(UsageMod::UnknownOptionError) do
140
+ usage = UsageMod::Base.new("-m", "", ["-q"]).parse_args
141
+ end
142
+ end
143
+
144
+ def testOptionWithArg
145
+ #$TRACE.set_level(9) do
146
+ usage = UsageMod::Base.new("(-m marg)", "", ["-m", "test1.txt"]).parse_args
147
+ assert_equal(true, usage.dash_m)
148
+ assert_equal("test1.txt", usage.marg)
149
+ #end
150
+ end
151
+
152
+ def testChoicesOnRegularArg
153
+ assert_raises(UsageMod::ChoicesNotOnOptionError) do
154
+ usage = UsageMod::Base.new("a|b|c", "", []).parse_args
155
+ end
156
+ end
157
+
158
+ def testChoicesWithTypeIndicator
159
+ assert_raises(UsageMod::ChoiceNoTypeError) do
160
+ #$TRACE.set_level(9) do
161
+ usage = UsageMod::Base.new("(-m %a|b|c)", "", []).parse_args
162
+ #end
163
+ end
164
+ end
165
+
166
+ def testOptionWithChoicesArg
167
+ #$TRACE.set_level(9) do
168
+ usage = UsageMod::Base.new("(-m a|b|c)", "", ["-m", "a"]).parse_args
169
+ assert_equal("a", usage.dash_m)
170
+ #end
171
+ end
172
+
173
+ def testOptionWithBadChoice
174
+ assert_raises(UsageMod::InvalidChoiceError) do
175
+ usage = UsageMod::Base.new("(-m a|b|c)", "", ["-m", "d"]).parse_args
176
+ end
177
+ end
178
+
179
+
180
+ def testOptionsWithoutArg
181
+ assert_raises(UsageMod::MissingOptionArgumentError) do
182
+ usage = UsageMod::Base.new("(-m marg)", "", ["-m"]).parse_args
183
+ end
184
+ end
185
+
186
+ def testOptionNestingUnderflowError
187
+ assert_raises(UsageMod::NestingUnderflow) do
188
+ usage = UsageMod::Base.new("-m marg)", "", ["-m"]).parse_args
189
+ end
190
+ end
191
+
192
+ def testOptionNestingOverflowError
193
+ assert_raises(UsageMod::NestingOverflow) do
194
+ usage = UsageMod::Base.new("(-m marg", "", ["-m"]).parse_args
195
+ end
196
+ end
197
+
198
+ def testOptionalOptionMissing
199
+ #$TRACE.set_level 9 do
200
+ usage = UsageMod::Base.new("[-m]", "", []).parse_args
201
+ assert_equal(nil, usage.dash_m)
202
+ #end
203
+ end
204
+
205
+ def testOptionalOption
206
+ #$TRACE.set_level 9 do
207
+ usage = UsageMod::Base.new("[-m]", "", ["-m"]).parse_args
208
+ assert_equal(true, usage.dash_m)
209
+ #end
210
+ end
211
+
212
+ def testOptionalOptionWithMissingArg
213
+ assert_raises(UsageMod::MissingOptionArgumentError) do
214
+ #$TRACE.set_level 9 do
215
+ usage = UsageMod::Base.new("[-m filename]", "", ["-m"]).parse_args
216
+ #end
217
+ end
218
+ end
219
+
220
+ def testOptionalOptionWithArgButWholeOptionMissing
221
+ #$TRACE.set_level 9 do
222
+ usage = UsageMod::Base.new("[-m filename]", "", []).parse_args
223
+ assert_equal(nil, usage.dash_m)
224
+ #end
225
+ end
226
+
227
+ def testOptionalOptionAndRegularArgMissing
228
+ #$TRACE.set_level 9 do
229
+ assert_raises(UsageMod::TooFewArgError) do
230
+ usage = UsageMod::Base.new("[-m filename] logfile", "", []).parse_args
231
+ end
232
+ #end
233
+ end
234
+
235
+ def testOptionalOptionAndRegularArgWithArgOnly
236
+ usage = UsageMod::Base.new("[-m filename] logfile", "", ["log1.txt"]).parse_args
237
+ assert_equal("log1.txt", usage.logfile)
238
+ assert_equal(nil, usage.dash_m)
239
+ end
240
+
241
+ def testOptionalOptionAndRegularArgWithBoth
242
+ usage = UsageMod::Base.new("[-m filename] logfile", "", ["-m", "file1.txt", "log1.txt"]).parse_args
243
+ assert_equal("log1.txt", usage.logfile)
244
+ assert_equal(true, usage.dash_m)
245
+ assert_equal("file1.txt", usage.filename)
246
+ end
247
+
248
+ def testRequiredOptionOptionalOptionAndRegularArgWithAll
249
+ usage = UsageMod::Base.new("-t [-m filename] logfile", "", ["-t", "-m", "file1.txt", "log1.txt"]).parse_args
250
+ assert_equal("log1.txt", usage.logfile)
251
+ assert_equal(true, usage.dash_t)
252
+ assert_equal(true, usage.dash_m)
253
+ assert_equal("file1.txt", usage.filename)
254
+ end
255
+
256
+ def testRequiredOptionOptionalOptionAndRegularArgWithRequired
257
+ usage = UsageMod::Base.new("-t [-m filename] logfile", "", ["-t", "log1.txt"]).parse_args
258
+ assert_equal("log1.txt", usage.logfile)
259
+ assert_equal(true, usage.dash_t)
260
+ assert_equal(nil, usage.dash_m)
261
+ end
262
+
263
+ def testRequiredOptionWithTwoOptionalChoiceOptionsAndTwoRegularArgs
264
+ usage = UsageMod::Base.new("(-w width) [-i r|R|m] [-o r|R|m] infile outfile", "",
265
+ ["-w", "33", "-i", "R", "-o", "r", "infile.txt", "outfile.txt"]).parse_args
266
+ assert_equal("33", usage.width)
267
+ assert_equal("R", usage.dash_i)
268
+ assert_equal("r", usage.dash_o)
269
+ assert_equal("infile.txt", usage.infile)
270
+ assert_equal("outfile.txt", usage.outfile)
271
+ end
272
+
273
+ def testOptionalArgumentWithTypeNotPresent
274
+ #$TRACE.set_level 9 do
275
+ usage = UsageMod::Base.new("arg1 [%arg2]", "", ["arg1"]).parse_args
276
+ assert_equal("arg1", usage.arg1)
277
+ assert_equal(nil, usage.arg2)
278
+ #end
279
+ end
280
+
281
+ def testOptionalArgumentWithTypePresent
282
+ usage = UsageMod::Base.new("arg1 [%arg2]", "", ["arg1", "5"]).parse_args
283
+ assert_equal("arg1", usage.arg1)
284
+ assert_equal(5, usage.arg2)
285
+ end
286
+
287
+ def testOptionalArgumentNotPresent
288
+ #$TRACE.set_level 9 do
289
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arg1"]).parse_args
290
+ assert_equal("arg1", usage.arg1)
291
+ assert_equal(nil, usage.arg2)
292
+ #end
293
+ end
294
+
295
+ def testOptionalArgumentPresent
296
+ usage = UsageMod::Base.new("arg1 [arg2]", "", ["arg1", "arg2"]).parse_args
297
+ assert_equal("arg1", usage.arg1)
298
+ assert_equal("arg2", usage.arg2)
299
+ end
300
+ end
301
+
302
+
303
+
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.3
3
+ specification_version: 1
4
+ name: Usage
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2005-09-20
8
+ summary: This module implements a simple no thought command line option parser
9
+ require_paths:
10
+ - lib
11
+ email:
12
+ homepage:
13
+ rubyforge_project:
14
+ description:
15
+ autorequire: Usage
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ authors: []
28
+ files:
29
+ - "./LICENSE"
30
+ - "./README"
31
+ - "./TODO"
32
+ - lib/Usage.rb
33
+ - tests/TC_Usage.rb
34
+ - samples/Sample1.rb
35
+ - samples/Sample2.rb
36
+ - samples/Sample3.rb
37
+ - samples/Sample4.rb
38
+ - samples/Sample5.rb
39
+ - samples/Sample6.rb
40
+ - samples/Sample7.rb
41
+ - README
42
+ test_files:
43
+ - tests/TC_Usage.rb
44
+ rdoc_options: []
45
+ extra_rdoc_files:
46
+ - README
47
+ executables: []
48
+ extensions: []
49
+ requirements: []
50
+ dependencies:
51
+ - !ruby/object:Gem::Dependency
52
+ name: SimpleTrace
53
+ version_requirement:
54
+ version_requirements: !ruby/object:Gem::Version::Requirement
55
+ requirements:
56
+ -
57
+ - "<="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.1.0
60
+ version: