optser 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,21 +1,18 @@
1
- # Gemfile.lock because this is a library, not a deployable application.
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
2
6
  Gemfile.lock
3
-
4
- # rcov generated
7
+ InstalledFiles
8
+ _yardoc
5
9
  coverage
6
-
7
- # rdoc generated
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
8
13
  rdoc
9
-
10
- # yard generated
11
- doc
12
- .yardoc
13
-
14
- # bundler config
15
- .bundle
16
-
17
- # bundler installs here if bundle path is set to "vendor"
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
18
  vendor
19
-
20
- # generated builds
21
- pkg
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.2"
4
+ - "1.9.3"
5
+ - jruby-19mode # JRuby in 1.9 mode
6
+ - rbx-19mode
7
+ script: bundle exec rake spec
data/Guardfile CHANGED
@@ -2,8 +2,7 @@ guard(
2
2
  :rspec,
3
3
  cli: '--format Fuubar --color',
4
4
  all_on_start: true,
5
- all_after_pass: false,
6
- :version => 2) do
5
+ all_after_pass: false) do
7
6
 
8
7
  # Watch our specs
9
8
  watch(%r{^spec/.+_spec\.rb$})
data/NOTICE.txt CHANGED
@@ -1,4 +1,4 @@
1
1
  Optser
2
- Copyright 2012 Benjamin Yu
2
+ Copyright 2012-2013 Benjamin Yu
3
3
  This software includes code written by Benjamin Yu <http://benjaminyu.org/>
4
4
  covered under the Apache License <http://www.apache.org/licenses/LICENSE-2.0>.
data/README.md CHANGED
@@ -3,6 +3,16 @@ Optser
3
3
 
4
4
  Handle options from a set of arguments.
5
5
 
6
+ Optser Links
7
+ ------------
8
+
9
+ * Source: https://github.com/byu/optser
10
+ * Continuous Integration: https://travis-ci.org/byu/optser
11
+ * [![Build Status](https://secure.travis-ci.org/byu/optser.png)](http://travis-ci.org/byu/optser)
12
+ * RubyGems: http://rubygems.org/gems/optser
13
+ * RubyDocs: http://rubydoc.info/gems/optser
14
+
15
+
6
16
  Installation
7
17
  ============
8
18
 
@@ -21,12 +21,29 @@ require 'optser/opt_set'
21
21
  #
22
22
  module Optser
23
23
 
24
+ ##
25
+ # Parses the options from the arguments list, and creates a
26
+ # brand new OptSet instance to lookup the options; but does not
27
+ # modify the args.
28
+ #
29
+ def self.extract_options(args)
30
+ return parse_options(args.last.is_a?(::Hash) ? args.last : nil)
31
+ end
32
+
24
33
  ##
25
34
  # Extracts the options from the arguments list, and creates a
26
- # brand new OptSet instance to lookup the options.
35
+ # brand new OptSet instance to lookup the options; pops the options
36
+ # off the args list if we have it.
27
37
  #
28
38
  def self.extract_options!(args)
29
- return Optser::OptSet.new(args.last.is_a?(::Hash) ? args.pop : nil)
39
+ return parse_options(args.last.is_a?(::Hash) ? args.pop : nil)
40
+ end
41
+
42
+ ##
43
+ # Creates a new OptSet from the given options.
44
+ #
45
+ def self.parse_options(options)
46
+ return Optser::OptSet.new options
30
47
  end
31
48
 
32
49
  end
@@ -1,11 +1,3 @@
1
1
  module Optser
2
-
3
- module Version
4
- MAJOR = 0
5
- MINOR = 1
6
- PATCH = 0
7
- BUILD = nil
8
- STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join '.'
9
- end
10
-
2
+ VERSION = '0.1.1'
11
3
  end
@@ -5,7 +5,7 @@ require 'optser/version'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = 'optser'
8
- gem.version = Optser::Version::STRING
8
+ gem.version = Optser::VERSION
9
9
  gem.authors = ['Benjamin Yu']
10
10
  gem.email = ['benjaminlyu@gmail.com']
11
11
  gem.description = 'Handle options from a set of arguments'
@@ -2,6 +2,25 @@ require 'spec_helper'
2
2
 
3
3
  describe Optser do
4
4
 
5
+ describe '.extract_options' do
6
+ let(:given_options) {
7
+ FactoryGirl.create :random_options
8
+ }
9
+ let(:given_args) {
10
+ [ given_options ]
11
+ }
12
+ it 'returns an OptSet without popping off arguments' do
13
+ expect(given_args.size).to eq(1)
14
+ opt_set = described_class.extract_options given_args
15
+ expect(opt_set).to be_a_kind_of(Optser::OptSet)
16
+ expect(opt_set.get(:option_a)).to eq(given_options.option_a)
17
+ expect(opt_set.get(:option_b)).to eq(given_options.option_b)
18
+ expect(opt_set.get(:nonexist, 'DEFAULT')).to eq('DEFAULT')
19
+ # Make sure it didn't pop off the args list
20
+ expect(given_args.size).to eq(1)
21
+ end
22
+ end
23
+
5
24
  describe '.extract_options!' do
6
25
  let(:given_options) {
7
26
  FactoryGirl.create :random_options
@@ -9,33 +28,45 @@ describe Optser do
9
28
 
10
29
  it 'returns an OptSet' do
11
30
  opt_set = described_class.extract_options! []
12
- opt_set.should be_a_kind_of(Optser::OptSet)
31
+ expect(opt_set).to be_a_kind_of(Optser::OptSet)
13
32
  end
14
33
 
15
34
  it 'returns an OptSet with our option set' do
16
35
  opt_set = described_class.extract_options! [
17
36
  given_options
18
37
  ]
19
- opt_set.should be_a_kind_of(Optser::OptSet)
20
- opt_set.get(:option_a).should == given_options.option_a
21
- opt_set.get(:option_b).should == given_options.option_b
22
- opt_set.get(:nonexist, 'DEFAULT').should == 'DEFAULT'
38
+ expect(opt_set).to be_a_kind_of(Optser::OptSet)
39
+ expect(opt_set.get(:option_a)).to eq(given_options.option_a)
40
+ expect(opt_set.get(:option_b)).to eq(given_options.option_b)
41
+ expect(opt_set.get(:nonexist, 'DEFAULT')).to eq('DEFAULT')
23
42
  end
24
43
 
25
44
  it 'pops off the options hash' do
26
45
  arguments = [1, 2, 3, 4, given_options]
27
46
  original_size = arguments.size
28
47
  described_class.extract_options! arguments
29
- arguments.size.should == (original_size - 1)
48
+ expect(arguments.size).to eq(original_size - 1)
30
49
  end
31
50
 
32
51
  it 'does not modify arguments w/o a trailing hash' do
33
52
  arguments = [1, 2, 3, 4].freeze
34
53
  original_size = arguments.size
35
54
  described_class.extract_options! arguments
36
- arguments.size.should == original_size
55
+ expect(arguments.size).to eq(original_size)
37
56
  end
57
+ end
38
58
 
59
+ describe '.parse_options' do
60
+ let(:given_options) {
61
+ FactoryGirl.create :random_options
62
+ }
63
+ it 'returns an OptSet w/ options' do
64
+ opt_set = described_class.parse_options given_options
65
+ expect(opt_set).to be_a_kind_of(Optser::OptSet)
66
+ expect(opt_set.get(:option_a)).to eq(given_options.option_a)
67
+ expect(opt_set.get(:option_b)).to eq(given_options.option_b)
68
+ expect(opt_set.get(:nonexist, 'DEFAULT')).to eq('DEFAULT')
69
+ end
39
70
  end
40
71
 
41
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-20 00:00:00.000000000 Z
12
+ date: 2013-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie
@@ -35,6 +35,7 @@ extensions: []
35
35
  extra_rdoc_files: []
36
36
  files:
37
37
  - .gitignore
38
+ - .travis.yml
38
39
  - Gemfile
39
40
  - Guardfile
40
41
  - LICENSE.txt
@@ -64,7 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
65
  version: '0'
65
66
  segments:
66
67
  - 0
67
- hash: -2204639992307856645
68
+ hash: -951095661251092663
68
69
  required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  none: false
70
71
  requirements:
@@ -73,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
74
  version: '0'
74
75
  segments:
75
76
  - 0
76
- hash: -2204639992307856645
77
+ hash: -951095661251092663
77
78
  requirements: []
78
79
  rubyforge_project:
79
80
  rubygems_version: 1.8.23