simple_option_parser 0.1 → 0.2
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.
- 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
|