opt-simple 0.9.7 → 0.9.8
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.
- data/lib/opt_simple.rb +24 -17
- data/test/test_usage.rb +10 -0
- metadata +2 -2
data/lib/opt_simple.rb
CHANGED
@@ -115,16 +115,6 @@ class OptSimple
|
|
115
115
|
@parameters.each do | parm |
|
116
116
|
intersection = @args & parm.switches
|
117
117
|
|
118
|
-
# load the defaults for this particular parm no matter what is on the CL
|
119
|
-
default_switches = @defaults.keys & parm.names
|
120
|
-
if default_switches.length > 1
|
121
|
-
raise OptSimple::Error "Clashes in the defaults for #{parm.switches}"
|
122
|
-
elsif default_switches.length == 1
|
123
|
-
# set the default value before we see what is on the CL
|
124
|
-
parm.param_options[default_switches.first] = @defaults[default_switches.first]
|
125
|
-
@results.merge! parm.param_options
|
126
|
-
end
|
127
|
-
|
128
118
|
unless intersection.empty?
|
129
119
|
mandatory_check.delete(parm.switches)
|
130
120
|
|
@@ -215,10 +205,12 @@ class OptSimple
|
|
215
205
|
# and the values set to true when seen on the CL
|
216
206
|
def flag(switches,help="",&block)
|
217
207
|
parm = Flag.new(switches,help,&block)
|
218
|
-
|
208
|
+
parm.set_opt false
|
209
|
+
add_parameter parm
|
219
210
|
|
211
|
+
# add it to the results to make checking flags nicer.
|
220
212
|
# use the first name b/c they are all aliased anyways.
|
221
|
-
@
|
213
|
+
@results.merge! parm.param_options
|
222
214
|
end
|
223
215
|
|
224
216
|
# Registers an optional parameter, with one or more argument following it.
|
@@ -230,7 +222,18 @@ class OptSimple
|
|
230
222
|
# leading '-'s removed) will be used as keys in the Result
|
231
223
|
# and the values set to the arg following the switch on the CL.
|
232
224
|
def option(switches,help="",metavar="ARG",&block)
|
233
|
-
|
225
|
+
parm = Option.new(switches,help,metavar,&block)
|
226
|
+
|
227
|
+
# set the defaults, if there are any in the defaults hash
|
228
|
+
intersection = parm.names & @defaults.keys
|
229
|
+
if intersection.length == 1
|
230
|
+
parm.set_opt @defaults[intersection.first]
|
231
|
+
@results.merge! parm.param_options
|
232
|
+
elsif intersection.length > 1
|
233
|
+
raise OptSimple::Error "Clashes in the defaults for #{parm.switches}"
|
234
|
+
end
|
235
|
+
|
236
|
+
add_parameter(parm)
|
234
237
|
end
|
235
238
|
|
236
239
|
# Registers a mandatory parameter, with one or more argument following it.
|
@@ -418,11 +421,10 @@ class OptSimple
|
|
418
421
|
def initialize(switches,help="",metavar="ARG",&block)
|
419
422
|
super(switches,help,&block)
|
420
423
|
@metavar = metavar
|
421
|
-
|
422
|
-
@param_options[names.first] = []
|
423
|
-
else
|
424
|
+
unless block_given?
|
424
425
|
@block = Proc.new {|arg| @param_options[names.first] = arg}
|
425
426
|
end
|
427
|
+
@first_call = true
|
426
428
|
end
|
427
429
|
|
428
430
|
def switch_len #:nodoc:
|
@@ -436,7 +438,12 @@ class OptSimple
|
|
436
438
|
|
437
439
|
# append val to the parameter list
|
438
440
|
def accumulate_opt(val)
|
439
|
-
@
|
441
|
+
if @first_call
|
442
|
+
@param_options[names.first] = [val].flatten
|
443
|
+
else
|
444
|
+
@param_options[names.first] << val
|
445
|
+
end
|
446
|
+
@first_call = false
|
440
447
|
end
|
441
448
|
|
442
449
|
end
|
data/test/test_usage.rb
CHANGED
@@ -125,5 +125,15 @@ class TestHelpStatement < Test::Unit::TestCase
|
|
125
125
|
assert_equal o[:some_stuff],"foo"
|
126
126
|
end
|
127
127
|
|
128
|
+
must "overwrite defaults when accumulate opt is used and option is seen on the CL" do
|
129
|
+
os = OptSimple.new({:some_stuff => ['bar']},%w[--some-stuff foo --some-stuff bar])
|
130
|
+
o = os.parse_opts! do
|
131
|
+
option %w[-s --some-stuff] do | arg |
|
132
|
+
accumulate_opt arg
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
assert_equal o.some_stuff, %w[foo bar]
|
137
|
+
end
|
128
138
|
end
|
129
139
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: opt-simple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.9.
|
5
|
+
version: 0.9.8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ethan Stryker
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-05 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|