simple_option_parser 0.5 → 0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2bc82530ff6992c2b415b8a582fb58b7119ef81d596f1f5dcb85db084c424d4
4
- data.tar.gz: b677c669f7010c71a5875b7b28e46aa5e493af4bc08569e1808d8547c435d375
3
+ metadata.gz: e770c9fea7d4e51cfb75e8604d4a4ab833766d1cf71ed0cdca45baff70d302f7
4
+ data.tar.gz: 3d0a6988fe4d43e8ed7b8ddb7de0b6d0fe60b87cb6526352d763f333e7bee42f
5
5
  SHA512:
6
- metadata.gz: 8fa7d3e235a81a75c75a4eddff9fbbf1cc4a2528ce7214a18e5a2996ae7747b7fd45a1384c8580b5840c66f8b97839d0f66678a3d61f912c9d4483e7b49c7196
7
- data.tar.gz: f99199f93c77809d50b8e0eb125c9af59e85348be745a7c9091690bae58461d73eac6245ea0ed870ba5b7b0afbb30a9364e669c8f9c4ac3fceeae6d8ce22f393
6
+ metadata.gz: 76faa2caa6a40edde2bdf26a56a72c2c97d7be42d0b15717ec9e716b4464190f1aa33f691d5c3e8208f8b5d7fcb607eadccca840d78653aa7f787efff9e7ed05
7
+ data.tar.gz: a679d33ab4801048c4ada587d5a68cd26cf9f5c64231ff12fa9086b7e8049194625fd33e19616044e102c9fdb9df6c9c4c919b8e3b9eaec554373b50e8e8aa07
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ Bundler.require
3
3
  require 'rake/testtask'
4
4
 
5
5
  Rake::TestTask.new do |t|
6
- t.test_files = FileList['test/*_test.rb']
6
+ t.test_files = FileList['test/*test.rb']
7
7
  end
8
8
 
9
9
  task :default => :test
@@ -13,15 +13,21 @@ class SimpleOptionParser
13
13
  end
14
14
 
15
15
  def parse(argv)
16
- options = @defaults.dup
16
+ options = {}
17
17
  while argv.first =~ %r{^--([\w\-]+)(?:=(.*))?$}
18
18
  key, value = $1, $2
19
19
  key = key.gsub('-', '_').to_sym
20
- value = true if value.nil?
20
+ value = if value.nil?
21
+ true
22
+ elsif options.has_key?(key)
23
+ [options[key], value].flatten
24
+ else
25
+ value
26
+ end
21
27
  options[key] = value
22
28
  argv.shift
23
29
  end
24
- HashStruct.new(options)
30
+ HashStruct.new(@defaults.merge(options))
25
31
  end
26
32
 
27
33
  end
@@ -1,8 +1,6 @@
1
- require_relative 'lib/simple_option_parser/version'
2
-
3
1
  Gem::Specification.new do |s|
4
2
  s.name = 'simple_option_parser'
5
- s.version = SimpleOptionParser::VERSION
3
+ s.version = '0.7'
6
4
  s.summary = 'A very simple option parser for ARGV.'
7
5
  s.author = 'John Labovitz'
8
6
  s.email = 'johnl@johnlabovitz.com'
@@ -16,9 +14,9 @@ Gem::Specification.new do |s|
16
14
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
15
  s.require_path = 'lib'
18
16
 
19
- s.add_dependency 'hashstruct', '~> 1.3'
17
+ s.add_dependency 'hashstruct', '~> 1.5'
20
18
 
21
- s.add_development_dependency 'minitest', '~> 5.16'
19
+ s.add_development_dependency 'minitest', '~> 5.20'
22
20
  s.add_development_dependency 'minitest-power_assert', '~> 0.3'
23
- s.add_development_dependency 'rake', '~> 13.0'
21
+ s.add_development_dependency 'rake', '~> 13.1'
24
22
  end
data/test/test.rb CHANGED
@@ -6,7 +6,7 @@ require 'simple_option_parser'
6
6
 
7
7
  class SimpleOptionParser
8
8
 
9
- class Test < MiniTest::Test
9
+ class Test < Minitest::Test
10
10
 
11
11
  def test_new_then_parse
12
12
  op = SimpleOptionParser.new
@@ -49,6 +49,15 @@ class SimpleOptionParser
49
49
  }
50
50
  end
51
51
 
52
+ def test_multiple
53
+ op = SimpleOptionParser.new
54
+ argv = %w{--foo --bar=a --bar=b --zot=c}
55
+ options = op.parse(argv)
56
+ assert {
57
+ options == { foo: true, bar: ['a', 'b'], zot: 'c' }
58
+ }
59
+ end
60
+
52
61
  end
53
62
 
54
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_option_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Labovitz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-01 00:00:00.000000000 Z
11
+ date: 2023-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashstruct
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '1.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.16'
33
+ version: '5.20'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '5.16'
40
+ version: '5.20'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest-power_assert
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '13.0'
61
+ version: '13.1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '13.0'
68
+ version: '13.1'
69
69
  description: "\n A very simple option parser for ARGV.\n "
70
70
  email: johnl@johnlabovitz.com
71
71
  executables: []
@@ -78,7 +78,6 @@ files:
78
78
  - README.md
79
79
  - Rakefile
80
80
  - lib/simple_option_parser.rb
81
- - lib/simple_option_parser/version.rb
82
81
  - simple_option_parser.gemspec
83
82
  - test/test.rb
84
83
  homepage: http://github.com/jslabovitz/simple_option_parser
@@ -100,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
99
  - !ruby/object:Gem::Version
101
100
  version: '0'
102
101
  requirements: []
103
- rubygems_version: 3.3.22
102
+ rubygems_version: 3.5.3
104
103
  signing_key:
105
104
  specification_version: 4
106
105
  summary: A very simple option parser for ARGV.
@@ -1,5 +0,0 @@
1
- class SimpleOptionParser
2
-
3
- VERSION = '0.5'
4
-
5
- end