getopt 1.3.4 → 1.3.5

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/CHANGES CHANGED
@@ -1,3 +1,10 @@
1
+ == 5-Jul-2006 - 1.3.5
2
+ * Fixed a bug where multiple long switches with the same first character
3
+ could cause invalid results. Thanks go to Michael Campbell for the spot.
4
+ * Added documentation to the README file that explains what happens if you
5
+ specify multiple long switches with the same first character and no short
6
+ switch alias.
7
+
1
8
  == 7-Mar-2006 - 1.3.4
2
9
  * Fixed Getopt::Long so that it can handle embedded hyphens in the long
3
10
  form, e.g. --foo-bar. Thanks go to Mark Meves for the spot.
data/README CHANGED
@@ -76,11 +76,14 @@ Long.getopts(switches)
76
76
 
77
77
  The array should be in the form:
78
78
 
79
+ # long form, short form (alias), option type
79
80
  ["--long", "-l", Getopt::OPTION]
80
81
 
81
- Note that only the long form is required. If the short switch is not
82
+ Note that only the long form is required. If the short form is not
82
83
  specified, it will automatically be set to the first letter of the long
83
- switch.
84
+ switch. If multiple long switches with the same first character are
85
+ listed without short switches, only the first long switch gets the short
86
+ switch alias.
84
87
 
85
88
  If the argument type is not specified, the default is BOOLEAN.
86
89
 
data/lib/getopt/long.rb CHANGED
@@ -5,11 +5,12 @@ module Getopt
5
5
  OPTIONAL = 2
6
6
  INCREMENT = 3
7
7
  NEGATABLE = 4
8
+ NUMERIC = 5
8
9
 
9
10
  class LongError < StandardError; end
10
11
 
11
12
  class Long
12
- VERSION = "1.3.4"
13
+ VERSION = '1.3.5'
13
14
 
14
15
  # Takes an array of switches. Each array consists of three elements.
15
16
  def self.getopts(*switches)
@@ -33,8 +34,6 @@ module Getopt
33
34
  valid.push(switch[0]) # Set valid long switches
34
35
 
35
36
  # Set type for long switch, default to BOOLEAN.
36
- # Create synonym hash. Default to first char of long switch for
37
- # short switch, e.g. "--verbose" creates a "-v" synonym.
38
37
  if switch[1].kind_of?(Fixnum)
39
38
  switch[2] = switch[1]
40
39
  types[switch[0]] = switch[2]
@@ -45,8 +44,11 @@ module Getopt
45
44
  switch[1] ||= switch[0][1..2]
46
45
  end
47
46
 
48
- syns[switch[0]] = switch[1]
49
- syns[switch[1]] = switch[0]
47
+ # Create synonym hash. Default to first char of long switch for
48
+ # short switch, e.g. "--verbose" creates a "-v" synonym. The same
49
+ # synonym can only be used once - first one wins.
50
+ syns[switch[0]] = switch[1] unless syns[switch[1]]
51
+ syns[switch[1]] = switch[0] unless syns[switch[1]]
50
52
 
51
53
  switch[1].each{ |char|
52
54
  types[char] = switch[2] # Set type for short switch
@@ -21,7 +21,7 @@ class TC_Getopt_Long < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def test_version
24
- assert_equal("1.3.4", Long::VERSION)
24
+ assert_equal('1.3.5', Long::VERSION)
25
25
  end
26
26
 
27
27
  def test_constants
@@ -249,6 +249,20 @@ class TC_Getopt_Long < Test::Unit::TestCase
249
249
  )
250
250
  }
251
251
  end
252
+
253
+ def test_multiple_similar_long_switches_with_no_short_switches
254
+ ARGV.push('--to','1','--too','2','--tooo','3')
255
+ assert_nothing_raised{
256
+ @opts = Long.getopts(
257
+ ["--to", REQUIRED],
258
+ ["--too", REQUIRED],
259
+ ["--tooo", REQUIRED]
260
+ )
261
+ }
262
+ assert_equal('1', @opts['to'])
263
+ assert_equal('2', @opts['too'])
264
+ assert_equal('3', @opts['tooo'])
265
+ end
252
266
 
253
267
  def teardown
254
268
  @opts = nil
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
2
+ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: getopt
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.3.4
7
- date: 2006-03-07 00:00:00 -07:00
6
+ version: 1.3.5
7
+ date: 2006-07-05 00:00:00 -06:00
8
8
  summary: Getopt::Std and Getopt::Long option parsers for Ruby
9
9
  require_paths:
10
10
  - lib
@@ -25,6 +25,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
25
  platform: ruby
26
26
  signing_key:
27
27
  cert_chain:
28
+ post_install_message:
28
29
  authors:
29
30
  - Daniel J. Berger
30
31
  files:
@@ -43,6 +44,7 @@ rdoc_options: []
43
44
  extra_rdoc_files:
44
45
  - README
45
46
  - CHANGES
47
+ - MANIFEST
46
48
  executables: []
47
49
 
48
50
  extensions: []