simple_option_parser 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Rakefile +7 -1
- data/lib/simple_option_parser.rb +17 -14
- data/simple_option_parser.gemspec +3 -1
- data/test/test.rb +53 -0
- metadata +34 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5734d6e5a68a0b9f1ce74b542779ea0a9c0a4bbd74e5e68d4e0a1dce1b4ca4b0
|
4
|
+
data.tar.gz: 3fb9742bd5e85aa36ce124a5d85faaacf33baa85c53fde1ab120a27d713d1d9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cf2750b083848975a144d9ebd2ab3120e4e4e7d017c7c08005864f0c72d648e38a96fdcd1a7fa52c16f5763abf0aed0680be9cf7949e1373b6f93f9b1c89afa
|
7
|
+
data.tar.gz: ed1fc9205d14087e08d41d87b028d061e1a13d48a1323423d65e487fc30e583df674a9e4f73dd7c5e85e2b66109ce586d145f9fc476a8e6dff65e86d8c4c3add
|
data/Rakefile
CHANGED
data/lib/simple_option_parser.rb
CHANGED
@@ -1,21 +1,24 @@
|
|
1
1
|
class SimpleOptionParser
|
2
2
|
|
3
|
-
attr_accessor :
|
4
|
-
attr_accessor :arguments
|
3
|
+
attr_accessor :defaults
|
5
4
|
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
5
|
+
def self.parse(argv, defaults={})
|
6
|
+
new(defaults).parse(argv)
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(defaults={})
|
10
|
+
@defaults = defaults
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse(argv)
|
14
|
+
options = @defaults.dup
|
15
|
+
while argv.first =~ %r{^--([\w\-]+)(?:=(.*))?$}
|
16
|
+
key, value = $1, $2
|
17
|
+
key = key.gsub('-', '_').to_sym
|
18
|
+
options[key] = parse_value(value)
|
19
|
+
argv.shift
|
18
20
|
end
|
21
|
+
options
|
19
22
|
end
|
20
23
|
|
21
24
|
def parse_value(value)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'simple_option_parser'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.2'
|
4
4
|
s.summary = 'A very simple option parser for ARGV.'
|
5
5
|
s.author = 'John Labovitz'
|
6
6
|
s.email = 'johnl@johnlabovitz.com'
|
@@ -15,5 +15,7 @@ A very simple option parser for ARGV.
|
|
15
15
|
s.require_path = 'lib'
|
16
16
|
|
17
17
|
s.add_development_dependency 'bundler'
|
18
|
+
s.add_development_dependency 'minitest'
|
19
|
+
s.add_development_dependency 'minitest-power_assert'
|
18
20
|
s.add_development_dependency 'rake'
|
19
21
|
end
|
data/test/test.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/power_assert'
|
3
|
+
|
4
|
+
require 'simple_option_parser'
|
5
|
+
|
6
|
+
class SimpleOptionParser
|
7
|
+
|
8
|
+
class Test < MiniTest::Test
|
9
|
+
|
10
|
+
def test_new_then_parse
|
11
|
+
op = SimpleOptionParser.new
|
12
|
+
argv = %w{--foo blah}
|
13
|
+
options = op.parse(argv)
|
14
|
+
assert {
|
15
|
+
options == { foo: true }
|
16
|
+
}
|
17
|
+
assert {
|
18
|
+
argv == ['blah']
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_direct_parse
|
23
|
+
argv = %w{--foo blah}
|
24
|
+
options = SimpleOptionParser.parse(argv, foo: true)
|
25
|
+
assert {
|
26
|
+
options == { foo: true }
|
27
|
+
}
|
28
|
+
assert {
|
29
|
+
argv == ['blah']
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_values
|
34
|
+
op = SimpleOptionParser.new
|
35
|
+
argv = %w{--foo --bar=xyz --zot=false --blargh=1.0 --grotz=5}
|
36
|
+
options = op.parse(argv)
|
37
|
+
assert {
|
38
|
+
options == { foo: true, bar: 'xyz', zot: false, blargh: 1.0, grotz: 5 }
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_defaults
|
43
|
+
op = SimpleOptionParser.new(foo: 'def', bar: 'ghi')
|
44
|
+
argv = %w{--foo=abc}
|
45
|
+
options = op.parse(argv)
|
46
|
+
assert {
|
47
|
+
options == { foo: 'abc', bar: 'ghi' }
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
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.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Labovitz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest-power_assert
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rake
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,6 +81,7 @@ files:
|
|
53
81
|
- Rakefile
|
54
82
|
- lib/simple_option_parser.rb
|
55
83
|
- simple_option_parser.gemspec
|
84
|
+
- test/test.rb
|
56
85
|
homepage: http://github.com/jslabovitz/simple_option_parser
|
57
86
|
licenses:
|
58
87
|
- MIT
|
@@ -73,8 +102,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
102
|
version: '0'
|
74
103
|
requirements: []
|
75
104
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.
|
105
|
+
rubygems_version: 2.7.4
|
77
106
|
signing_key:
|
78
107
|
specification_version: 4
|
79
108
|
summary: A very simple option parser for ARGV.
|
80
|
-
test_files:
|
109
|
+
test_files:
|
110
|
+
- test/test.rb
|