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 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