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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a457f61c5a7dc1848b83cc362efa4008a852c65c
4
- data.tar.gz: 4faa1b24e74b9f9c8821d06418ebf989da138abe
2
+ SHA256:
3
+ metadata.gz: 5734d6e5a68a0b9f1ce74b542779ea0a9c0a4bbd74e5e68d4e0a1dce1b4ca4b0
4
+ data.tar.gz: 3fb9742bd5e85aa36ce124a5d85faaacf33baa85c53fde1ab120a27d713d1d9f
5
5
  SHA512:
6
- metadata.gz: 24a1cbd8db321f6bb98d0b31b323aa23a9751353a31f6c7144d59e7f1c24bab75ca58584b72fca2d0aa777aa1792a310b7d0bc2db227cec5b777996729664af6
7
- data.tar.gz: ccb8364d720df4ab257d2e7413b89a18315aab9c217ab6b304584321f7a97d12f00b21475f94ec11da8aacc07f7ee1e3825c66681c9b5caf39de03a8205e9eb4
6
+ metadata.gz: 9cf2750b083848975a144d9ebd2ab3120e4e4e7d017c7c08005864f0c72d648e38a96fdcd1a7fa52c16f5763abf0aed0680be9cf7949e1373b6f93f9b1c89afa
7
+ data.tar.gz: ed1fc9205d14087e08d41d87b028d061e1a13d48a1323423d65e487fc30e583df674a9e4f73dd7c5e85e2b66109ce586d145f9fc476a8e6dff65e86d8c4c3add
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
- require 'bundler/gem_tasks'
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ end
6
+
7
+ task :default => :test
@@ -1,21 +1,24 @@
1
1
  class SimpleOptionParser
2
2
 
3
- attr_accessor :options
4
- attr_accessor :arguments
3
+ attr_accessor :defaults
5
4
 
6
- def initialize(options={})
7
- @options = options
8
- @arguments = []
9
- ARGV.each do |arg|
10
- if arg =~ %r{^--([\w\-]+)(=(.*))?$}
11
- key, value = $1, $3
12
- key = key.gsub('-', '_').to_sym
13
- value = parse_value(value)
14
- @options[key] = value
15
- else
16
- @arguments << arg
17
- end
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.1'
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
@@ -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.1'
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: 2016-01-17 00:00:00.000000000 Z
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.5.1
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