opt-simple 0.7.3 → 0.7.4

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.
Files changed (3) hide show
  1. data/lib/opt_simple.rb +11 -5
  2. data/test/test_usage.rb +15 -6
  3. metadata +5 -17
data/lib/opt_simple.rb CHANGED
@@ -12,7 +12,9 @@ There are three methods to define command line parameters:
12
12
  argument - a mandatory command line parameter with one or more arguments
13
13
 
14
14
  Inside the blocks in flag, option, and argument a shortcut function called 'set_opt'
15
- can be used to set an option that will be returned in the options hash.
15
+ can be used to set an option that will be returned in the options hash. The 'accumulate_opt'
16
+ method can be used in the option and argument blocks to create a list of values, and in
17
+ the flag block to increment a counter (with verbosity being the classic example).
16
18
 
17
19
  The number of arguments are determined by the 'arity' of the block.
18
20
 
@@ -79,7 +81,7 @@ class OptSimple
79
81
  end
80
82
 
81
83
  mandatory_check = mandatory_opts.map {|m| m.switches}
82
-
84
+
83
85
  if(loc = @args.index('--'))
84
86
  #remove the '--', but don't include it w/ positional arguments
85
87
  @positional_arguments += @args.slice!(loc..-1)[1..-1]
@@ -96,9 +98,9 @@ class OptSimple
96
98
 
97
99
  # now actually parse the args, and call all the stored up blocks from the options
98
100
  @parameters.each do | parm |
99
- mandatory_check.delete(parm.switches)
100
101
  intersection = @args & parm.switches
101
102
  unless intersection.empty?
103
+ mandatory_check.delete(parm.switches)
102
104
 
103
105
  arg_locations = []
104
106
  @args.each_with_index {|arg,i| arg_locations << i if intersection.include?(arg) }
@@ -116,7 +118,7 @@ class OptSimple
116
118
  chunks.each do | pieces |
117
119
  if pieces.length < parm.block.arity or
118
120
  pieces.any? {|p| p.start_with?('-')}
119
- raise OptSimple::MissingArgument.new "Not enough args following #{intersection}",self
121
+ raise OptSimple::ParameterUsageError.new "Not enough args following #{intersection}",self
120
122
  end
121
123
 
122
124
  begin
@@ -420,9 +422,13 @@ class OptSimple
420
422
  # is used on the command line
421
423
  class InvalidOption < Error;end
422
424
 
423
- # An exception thrown if a mandatory parameter is not
425
+ # An exception thrown if a mandatory parameter is not
424
426
  # used on the command line
425
427
  class MissingArgument < Error;end
426
428
 
429
+ # An exception thrown if a parameter isn't followed by enough arguments
430
+ # on the command line
431
+ class ParameterUsageError < Error;end
432
+
427
433
  end
428
434
 
data/test/test_usage.rb CHANGED
@@ -8,21 +8,30 @@ class TestHelpStatement < Test::Unit::TestCase
8
8
  assert_raise(OptSimple::Error) { OptSimple.new.parse_opts! {option %w[-a --awesome]; flag '-awesome' } }
9
9
  end
10
10
 
11
- must "raise error when unknown option is given" do
12
- os = OptSimple.new({},['-not-specified'])
13
- assert_raise(OptSimple::InvalidOption) { os.parse_opts! { option %w[-a --awesome] } }
11
+ must "throw parameter missing exception when the argument method is used but the parm isn't specified" do
12
+ os = OptSimple.new({})
13
+ assert_raise(OptSimple::MissingArgument) do
14
+ os.parse_opts! do
15
+ argument '-a'
16
+ end
17
+ end
14
18
  end
15
19
 
16
- must "raise error when not enough arguments are given" do
20
+ must "throw missing parameter usage error when a parameter isn't followed by enough arguments" do
17
21
  os = OptSimple.new({},['-a'])
18
- assert_raise(OptSimple::MissingArgument) do
22
+ assert_raise(OptSimple::ParameterUsageError) do
19
23
  os.parse_opts! do
20
- option '-a' do |arg|
24
+ argument '-a' do |arg|
21
25
  nil
22
26
  end
23
27
  end
24
28
  end
25
29
  end
30
+
31
+ must "raise error when unknown option is given" do
32
+ os = OptSimple.new({},['-not-specified'])
33
+ assert_raise(OptSimple::InvalidOption) { os.parse_opts! { option %w[-a --awesome] } }
34
+ end
26
35
 
27
36
  must "handle arguments with equals and commas" do
28
37
  os = OptSimple.new({},['-a=2','--foo=4,5'])
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opt-simple
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
5
- prerelease:
6
- segments:
7
- - 0
8
- - 7
9
- - 3
10
- version: 0.7.3
4
+ version: 0.7.4
11
5
  platform: ruby
12
6
  authors:
13
7
  - Ethan Stryker
@@ -15,7 +9,7 @@ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
11
 
18
- date: 2011-03-12 00:00:00 +00:00
12
+ date: 2011-03-13 00:00:00 +00:00
19
13
  default_executable:
20
14
  dependencies: []
21
15
 
@@ -46,27 +40,21 @@ rdoc_options: []
46
40
  require_paths:
47
41
  - lib
48
42
  required_ruby_version: !ruby/object:Gem::Requirement
49
- none: false
50
43
  requirements:
51
44
  - - ">="
52
45
  - !ruby/object:Gem::Version
53
- hash: 3
54
- segments:
55
- - 0
56
46
  version: "0"
47
+ version:
57
48
  required_rubygems_version: !ruby/object:Gem::Requirement
58
- none: false
59
49
  requirements:
60
50
  - - ">="
61
51
  - !ruby/object:Gem::Version
62
- hash: 3
63
- segments:
64
- - 0
65
52
  version: "0"
53
+ version:
66
54
  requirements: []
67
55
 
68
56
  rubyforge_project: opt-simple
69
- rubygems_version: 1.6.1
57
+ rubygems_version: 1.3.5
70
58
  signing_key:
71
59
  specification_version: 3
72
60
  summary: A simple and elegant command line option parser.