raph 0.0.2 → 0.0.3

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.
@@ -1,47 +1,47 @@
1
- require 'spec_helper'
2
-
3
- module Raph
4
- module Parser
5
- describe BaseParser do
6
- describe '#id' do
7
- it 'returns correct value for base class' do
8
- expect(subject.id).to eql :bases
9
- end
10
-
11
- it 'returns correct value for child class' do
12
- class BaseArgumentParser < BaseParser; end
13
- expect(BaseArgumentParser.new.id).to eql :base_arguments
14
- end
15
-
16
- it 'returns correct value for modulized class' do
17
- module A
18
- module B
19
- class TestParser < BaseParser; end
20
- end
21
- end
22
- expect(A::B::TestParser.new.id).to eql :tests
23
- end
24
-
25
- it 'is correct when no name convention' do
26
- class Plural < BaseParser; end
27
- expect(Plural.new.id).to eql :plurals
28
- end
29
-
30
- it 'can be redefined' do
31
- class Plural < BaseParser
32
- def id
33
- :tests
34
- end
35
- end
36
- expect(Plural.new.id).to eql :tests
37
- end
38
- end
39
-
40
- describe '#parse' do
41
- it 'returns args' do
42
- expect(subject.parse [1, 2, 3]).to be nil
43
- end
44
- end
45
- end
46
- end
47
- end
1
+ require 'spec_helper'
2
+
3
+ module Raph
4
+ module Parser
5
+ describe BaseParser do
6
+ describe '#id' do
7
+ it 'returns correct value for base class' do
8
+ expect(subject.id).to eql :bases
9
+ end
10
+
11
+ it 'returns correct value for child class' do
12
+ class BaseArgumentParser < BaseParser; end
13
+ expect(BaseArgumentParser.new.id).to eql :base_arguments
14
+ end
15
+
16
+ it 'returns correct value for modulized class' do
17
+ module A
18
+ module B
19
+ class TestParser < BaseParser; end
20
+ end
21
+ end
22
+ expect(A::B::TestParser.new.id).to eql :tests
23
+ end
24
+
25
+ it 'is correct when no name convention' do
26
+ class Plural < BaseParser; end
27
+ expect(Plural.new.id).to eql :plurals
28
+ end
29
+
30
+ it 'can be redefined' do
31
+ class Plural < BaseParser
32
+ def id
33
+ :tests
34
+ end
35
+ end
36
+ expect(Plural.new.id).to eql :tests
37
+ end
38
+ end
39
+
40
+ describe '#parse' do
41
+ it 'returns args' do
42
+ expect(subject.parse [1, 2, 3]).to be nil
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,25 +1,25 @@
1
- require 'spec_helper'
2
-
3
- require 'raph/parser/file_parser'
4
-
5
- module Raph
6
- module Parser
7
- describe FileParser do
8
- describe '#parse' do
9
- it 'detects files' do
10
- expect(subject.parse(['**/*.rb'])).to include(Dir["**/file_parser_spec.rb"].join)
11
- end
12
-
13
- it 'does not detect non files' do
14
- expect(subject.parse(['no-such-file.py'])).to be_empty
15
- end
16
- end
17
-
18
- describe '#id' do
19
- it 'has correct form' do
20
- expect(subject.id).to eql :files
21
- end
22
- end
23
- end
24
- end
25
- end
1
+ require 'spec_helper'
2
+
3
+ require 'raph/parser/file_parser'
4
+
5
+ module Raph
6
+ module Parser
7
+ describe FileParser do
8
+ describe '#parse' do
9
+ it 'detects files' do
10
+ expect(subject.parse(['**/*.rb'])).to include(Dir["**/file_parser_spec.rb"].join)
11
+ end
12
+
13
+ it 'does not detect non files' do
14
+ expect(subject.parse(['no-such-file.py'])).to be_empty
15
+ end
16
+ end
17
+
18
+ describe '#id' do
19
+ it 'has correct form' do
20
+ expect(subject.id).to eql :files
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,48 +1,48 @@
1
- require 'spec_helper'
2
-
3
- module Raph
4
- module Parser
5
- describe FlagParser do
6
- describe '#id' do
7
- it 'has correct form' do
8
- expect(subject.id).to eq :flags
9
- end
10
- end
11
-
12
- describe '#parse' do
13
- it 'returns flags only' do
14
- expect(subject.parse(['-h', '-9', '123', '--config', 'config.xml'])).
15
- to match_array([:h, :'9', :config])
16
- end
17
-
18
- it 'has no flags here' do
19
- expect(subject.parse(['true', '-', '123'])).to match_array([])
20
- expect(subject.parse([])).to match_array([])
21
- end
22
- end
23
-
24
- describe '#flag?' do
25
- def flag?(option)
26
- !subject.flag?(option).nil?
27
- end
28
-
29
- it 'is a flag' do
30
- expect(flag? '-h').to be true
31
- expect(flag? '-T').to be true
32
- expect(flag? '--config').to be true
33
- expect(flag? '--my-flag').to be true
34
- end
35
-
36
- it 'is not a flag?' do
37
- expect(flag? '').to be false
38
- expect(flag? '-').to be false
39
- expect(flag? '--').to be false
40
- expect(flag? '---').to be false
41
- expect(flag? '--h').to be false
42
- expect(flag? 'option').to be false
43
- expect(flag? '---option').to be false
44
- end
45
- end
46
- end
47
- end
48
- end
1
+ require 'spec_helper'
2
+
3
+ module Raph
4
+ module Parser
5
+ describe FlagParser do
6
+ describe '#id' do
7
+ it 'has correct form' do
8
+ expect(subject.id).to eq :flags
9
+ end
10
+ end
11
+
12
+ describe '#parse' do
13
+ it 'returns flags only' do
14
+ expect(subject.parse(['-h', '-9', '123', '--config', 'config.xml'])).
15
+ to match_array([:h, :'9', :config])
16
+ end
17
+
18
+ it 'has no flags here' do
19
+ expect(subject.parse(['true', '-', '123'])).to match_array([])
20
+ expect(subject.parse([])).to match_array([])
21
+ end
22
+ end
23
+
24
+ describe '#flag?' do
25
+ def flag?(option)
26
+ subject.flag?(option)
27
+ end
28
+
29
+ it 'is a flag' do
30
+ expect(flag? '-h').to be true
31
+ expect(flag? '-T').to be true
32
+ expect(flag? '--config').to be true
33
+ expect(flag? '--my-flag').to be true
34
+ end
35
+
36
+ it 'is not a flag?' do
37
+ expect(flag? '').to be false
38
+ expect(flag? '-').to be false
39
+ expect(flag? '--').to be false
40
+ expect(flag? '---').to be false
41
+ expect(flag? '--h').to be false
42
+ expect(flag? 'option').to be false
43
+ expect(flag? '---option').to be false
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ module Raph
4
+ module Parser
5
+ describe GroupedArgParser do
6
+ describe '#id' do
7
+ it 'has correct form' do
8
+ expect(subject.id).to eq :grouped_args
9
+ end
10
+ end
11
+
12
+ describe '#parse' do
13
+ it 'returns groups' do
14
+ parsed = subject.parse(['-s', '1', '2', '3', '--assignment=one'])
15
+ expect(parsed.size).to be 2
16
+ expect(parsed).to include(:s => ['1', '2', '3'])
17
+ expect(parsed).to include(:'assignment=one' => [])
18
+ end
19
+
20
+ it 'returns empty hash when group not found' do
21
+ parsed = subject.parse(['1', '2', '3', 'one', 'two'])
22
+ expect(parsed).to be_a Hash
23
+ expect(parsed).to be_empty
24
+ end
25
+
26
+ it 'returns empty hash when there are no parameters' do
27
+ parsed = subject.parse([])
28
+ expect(parsed).to be_a Hash
29
+ expect(parsed).to be_empty
30
+ end
31
+
32
+ it 'selects only arguments that belongs to the group' do
33
+ parsed = subject.parse(['one', 'two', '-f', 'three', 'four'])
34
+ expect(parsed.size).to be 1
35
+ expect(parsed).to include(:f => ['three', 'four'])
36
+ end
37
+ end
38
+
39
+ describe '#group?' do
40
+ def group?(option)
41
+ subject.group?(option)
42
+ end
43
+
44
+ it 'is a group' do
45
+ positive_options = ['-h', '--help', '--assignment=true']
46
+ positive_options.each do |option|
47
+ expect(group? option).to be true
48
+ end
49
+ end
50
+
51
+ it 'is not a group' do
52
+ negative_options = ['', '-', '--', ' ', 'option', '1', '-assign=', '=']
53
+ negative_options.each do |option|
54
+ expect(group? option).to be false
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -1,56 +1,78 @@
1
- require 'spec_helper'
2
- require 'fileutils'
3
-
4
- module Raph
5
- describe Raph do
6
-
7
- class NumberParser
8
- attr_accessor :id, :max
9
-
10
- def initialize(id, max=100)
11
- @id = id
12
- @max = max
13
- end
14
-
15
- def parse(args)
16
- args.select { |x| x <= max }
17
- end
18
- end
19
-
20
- describe '#parse' do
21
- let (:numbers) { (1..100) }
22
- let (:parser1) { NumberParser.new(:first, 5) }
23
- let (:parser2) { NumberParser.new(:second, 6) }
24
-
25
- it 'should parse nothing if parsers not added' do
26
- raph = Raph.new.tap { |r| r.parse numbers }
27
- expect(raph.all).to match_array numbers
28
- end
29
-
30
- it 'should have correspoding attribute if parser added' do
31
- raph = Raph.new.tap do |r|
32
- r.add_parser(parser1)
33
- r.add_parser(parser2)
34
- r.parse(numbers)
35
- end
36
- expect(raph.all).to match_array numbers
37
- expect(raph.send(parser1.id)).to match_array (1..parser1.max)
38
- expect(raph.send(parser2.id)).to match_array (1..parser2.max)
39
- end
40
- end
41
- end
42
-
43
- context 'when we include Raph' do
44
- it 'loads global variable' do
45
- expect($raph).to be_a Raph
46
- end
47
-
48
- it 'has proper attributes' do
49
- raph = $raph
50
- expect(raph.all).not_to be nil
51
- expect(raph.send(FlagParser.new.id)).not_to be nil
52
- expect(raph.send(FileParser.new.id)).not_to be nil
53
- expect(raph.send(AssignmentParser.new.id)).not_to be nil
54
- end
55
- end
56
- end
1
+ require 'spec_helper'
2
+ require 'fileutils'
3
+
4
+ module Raph
5
+ class NumberParser
6
+ attr_accessor :id, :max
7
+
8
+ def initialize(id, max=100)
9
+ @id = id
10
+ @max = max
11
+ end
12
+
13
+ def parse(args)
14
+ args.select { |x| x <= max }
15
+ end
16
+ end
17
+
18
+ describe Raph do
19
+ let (:numbers) { (1..100) }
20
+ let (:parser1) { NumberParser.new(:first, 5) }
21
+ let (:parser2) { NumberParser.new(:second, 6) }
22
+
23
+ describe '#parse' do
24
+ it 'should parse nothing if parsers not added' do
25
+ raph = Raph.new.tap { |r| r.parse numbers }
26
+ expect(raph.all).to match_array numbers
27
+ end
28
+
29
+ it 'should have correspoding attribute if parser added' do
30
+ raph = Raph.new.tap do |r|
31
+ r.add_parser(parser1)
32
+ r.add_parser(parser2)
33
+ r.parse(numbers)
34
+ end
35
+ expect(raph.all).to match_array numbers
36
+ expect(raph.send(parser1.id)).to match_array (1..parser1.max)
37
+ expect(raph.send(parser2.id)).to match_array (1..parser2.max)
38
+ end
39
+ end
40
+
41
+ describe '#method_missing' do
42
+ it 'should throw when argument passed' do
43
+ raph = Raph.new.tap do |r|
44
+ r.add_parser(parser1)
45
+ r.parse(numbers)
46
+ end
47
+ expect{ raph.send(parser1.id, 'argument') }.to raise_error
48
+ end
49
+
50
+ it 'should throw when block passed' do
51
+ raph = Raph.new.tap do |r|
52
+ r.add_parser(parser1)
53
+ r.parse(numbers)
54
+ end
55
+ expect{ raph.send(parser1.id) { 'my block' } }.to raise_error
56
+ end
57
+
58
+ it 'should throw when wrong id given' do
59
+ raph = Raph.new.tap { |r| r.parse numbers }
60
+ expect{ raph.send(:wrong_id) }.to raise_error
61
+ end
62
+ end
63
+ end
64
+
65
+ context 'when we include Raph' do
66
+ it 'loads global variable' do
67
+ expect($raph).to be_a Raph
68
+ end
69
+
70
+ it 'has proper attributes' do
71
+ raph = $raph
72
+ expect(raph.all).not_to be nil
73
+ expect(raph.send(FlagParser.new.id)).not_to be nil
74
+ expect(raph.send(FileParser.new.id)).not_to be nil
75
+ expect(raph.send(AssignmentParser.new.id)).not_to be nil
76
+ end
77
+ end
78
+ end
@@ -1 +1 @@
1
- require 'raph'
1
+ require 'raph'
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitalii Elenhaupt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-17 00:00:00.000000000 Z
11
+ date: 2015-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
55
  description: |2
@@ -61,9 +61,10 @@ executables: []
61
61
  extensions: []
62
62
  extra_rdoc_files: []
63
63
  files:
64
- - .gitignore
65
- - .travis.yml
66
- - .yardopts
64
+ - ".gitignore"
65
+ - ".travis.yml"
66
+ - ".yardopts"
67
+ - CHANGELOG.md
67
68
  - Gemfile
68
69
  - LICENSE
69
70
  - LICENSE.txt
@@ -75,12 +76,14 @@ files:
75
76
  - lib/raph/parser/base_parser.rb
76
77
  - lib/raph/parser/file_parser.rb
77
78
  - lib/raph/parser/flag_parser.rb
79
+ - lib/raph/parser/grouped_arg_parser.rb
78
80
  - lib/raph/version.rb
79
81
  - raph.gemspec
80
82
  - spec/raph/parser/assinment_parser_spec.rb
81
83
  - spec/raph/parser/base_parser_spec.rb
82
84
  - spec/raph/parser/file_parser_spec.rb
83
85
  - spec/raph/parser/flag_parser_spec.rb
86
+ - spec/raph/parser/grouped_args_parser_spec.rb
84
87
  - spec/raph_spec.rb
85
88
  - spec/spec_helper.rb
86
89
  homepage: https://github.com/veelenga/raph
@@ -93,17 +96,17 @@ require_paths:
93
96
  - lib
94
97
  required_ruby_version: !ruby/object:Gem::Requirement
95
98
  requirements:
96
- - - '>='
99
+ - - ">="
97
100
  - !ruby/object:Gem::Version
98
101
  version: 1.9.3
99
102
  required_rubygems_version: !ruby/object:Gem::Requirement
100
103
  requirements:
101
- - - '>='
104
+ - - ">="
102
105
  - !ruby/object:Gem::Version
103
106
  version: '0'
104
107
  requirements: []
105
108
  rubyforge_project:
106
- rubygems_version: 2.0.14
109
+ rubygems_version: 2.4.6
107
110
  signing_key:
108
111
  specification_version: 4
109
112
  summary: Ruby Argument Parsing for Humans.
@@ -112,5 +115,7 @@ test_files:
112
115
  - spec/raph/parser/base_parser_spec.rb
113
116
  - spec/raph/parser/file_parser_spec.rb
114
117
  - spec/raph/parser/flag_parser_spec.rb
118
+ - spec/raph/parser/grouped_args_parser_spec.rb
115
119
  - spec/raph_spec.rb
116
120
  - spec/spec_helper.rb
121
+ has_rdoc: