opt_parse_validator 0.0.5 → 0.0.6

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
2
  SHA1:
3
- metadata.gz: e4e1a583bd0dd3f0277825ac7f87a82c3bd7d937
4
- data.tar.gz: d8af127e4a81cdc8995d55581b80f0958a87021b
3
+ metadata.gz: da564ea023221e95e2ef0ee45258754314e7bcd8
4
+ data.tar.gz: e23c41c855f934d09205ce95b5231d4e5a781568
5
5
  SHA512:
6
- metadata.gz: 3673cb2bb2ed1bd2209e7c57d8fddc79ab5d67b70563453049061400c307a1e90421abcf2583dc15697b75611601835291e2b8894dad66b2857466c6f4a29fcb
7
- data.tar.gz: 695a17c09b549f96df4bd9cd7e16a993a690e6fc2072d9441d128892a473f71d4148c01a18bc4f4e918024f47ba969feec1e82c05ab7b7855025a1df17cc20dd
6
+ metadata.gz: bb975e401d8c2b44c46d0c7b242a9f6050e37ea74fff3ec3759339f6ee2f65edbedf56e67198e0a16c7a4eed8b3f1dc9387042400eb69f4309d07119917617da
7
+ data.tar.gz: 1b1bce2783b48eb104edf9e35a921cbed61c3ddbd527bcbf571ae915e1fa6c356668497ce8710def3cf9efbf3e157087f6d4928626f454e7af1e9f3d4e01c7f0
data/README.md CHANGED
@@ -8,6 +8,8 @@ OptParseValidator
8
8
 
9
9
 
10
10
  ### Available Validators & associated attributes:
11
+ - Array
12
+ - :separator (default: ',')
11
13
  - Boolean
12
14
  - Choice
13
15
  - :choices (mandatory)
@@ -35,6 +37,8 @@ OptParseValidator
35
37
  - Proxy
36
38
  - :protocols
37
39
  - :default_protocol
40
+ - Scope
41
+ - separator (default: ',')
38
42
  - String
39
43
  - URI
40
44
  - :protocols
@@ -0,0 +1,26 @@
1
+ module OptParseValidator
2
+ # Implementation of the Array Option
3
+ class OptArray < OptBase
4
+ # @param [ String ] value
5
+ #
6
+ # @return [ Array ]
7
+ def validate(value)
8
+ super(value)
9
+ value.split(separator)
10
+ end
11
+
12
+ # @return [ String ] The separator used to split the string into an array
13
+ def separator
14
+ attrs[:separator] || ','
15
+ end
16
+
17
+ # See OptBase#normalize
18
+ # @param [ Array ] value
19
+ def normalize(values)
20
+ values.each_with_index do |value, index|
21
+ values[index] = super(value)
22
+ end
23
+ values
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,6 @@
1
- %w(base string integer positive_integer choice boolean uri url proxy credentials path file_path directory_path).each do |opt|
1
+ %w(
2
+ base string integer positive_integer choice boolean uri url proxy credentials
3
+ path file_path directory_path array
4
+ ).each do |opt|
2
5
  require 'opt_parse_validator/opts/' + opt
3
6
  end
@@ -1,4 +1,4 @@
1
1
  # Gem Version
2
2
  module OptParseValidator
3
- VERSION = '0.0.5'
3
+ VERSION = '0.0.6'
4
4
  end
@@ -24,9 +24,9 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency 'addressable', '~> 2.3'
25
25
 
26
26
  s.add_development_dependency 'rake', '~> 10.4'
27
- s.add_development_dependency 'rspec', '~> 3.1'
27
+ s.add_development_dependency 'rspec', '~> 3.2'
28
28
  s.add_development_dependency 'rspec-its', '~> 1.1'
29
- s.add_development_dependency 'bundler', '~> 1.6'
30
- s.add_development_dependency 'rubocop', '~> 0.27'
29
+ s.add_development_dependency 'bundler', '~> 1.7'
30
+ s.add_development_dependency 'rubocop', '~> 0.28'
31
31
  s.add_development_dependency 'simplecov', '~> 0.9'
32
32
  end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe OptParseValidator::OptArray do
4
+ subject(:opt) { described_class.new(['-a', '--array VALUES'], attrs) }
5
+ let(:attrs) { {} }
6
+
7
+ describe '#validate' do
8
+ context 'when an empty value is given' do
9
+ it 'raises an error' do
10
+ expect { opt.validate('') }.to raise_error('Empty option value supplied')
11
+ end
12
+ end
13
+
14
+ context 'when the separator is not supplied' do
15
+ context 'when not present in the argument' do
16
+ it 'returns an array with the correct value' do
17
+ expect(opt.validate('rspec')).to eql %w(rspec)
18
+ end
19
+ end
20
+
21
+ context 'when present' do
22
+ it 'returns the expected array' do
23
+ expect(opt.validate('r1,r2,r3')).to eql %w(r1 r2 r3)
24
+ end
25
+ end
26
+ end
27
+
28
+ context 'when separator supplied' do
29
+ subject(:opt) { described_class.new(['-a', '--array VALUES'], separator: '-') }
30
+
31
+ it 'returns an array with the correct value' do
32
+ expect(opt.validate('r1,r2,r3')).to eql %w(r1,r2,r3)
33
+ end
34
+
35
+ it 'returns the expected array' do
36
+ expect(opt.validate('r1-r2-r3')).to eql %w(r1 r2 r3)
37
+ end
38
+ end
39
+ end
40
+
41
+ describe '#normalize' do
42
+ after { expect(opt.normalize(@value)).to eql @expected }
43
+
44
+ context 'when no :normalize attribute' do
45
+ it 'returns the value' do
46
+ @value = %w(t1 t2)
47
+ @expected = @value
48
+ end
49
+ end
50
+
51
+ context 'when a single normalization' do
52
+ let(:attrs) { { normalize: :to_sym } }
53
+
54
+ it 'returns the expected value' do
55
+ @value = [1.0, 'test']
56
+ @expected = [1.0, :test]
57
+ end
58
+ end
59
+ end
60
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opt_parse_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - WPScanTeam - Erwan le Rousseau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-26 00:00:00.000000000 Z
11
+ date: 2015-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.1'
47
+ version: '3.2'
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
- version: '3.1'
54
+ version: '3.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec-its
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.6'
75
+ version: '1.7'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.6'
82
+ version: '1.7'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.27'
89
+ version: '0.28'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.27'
96
+ version: '0.28'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: simplecov
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +128,7 @@ files:
128
128
  - lib/opt_parse_validator/hacks.rb
129
129
  - lib/opt_parse_validator/options_file.rb
130
130
  - lib/opt_parse_validator/opts.rb
131
+ - lib/opt_parse_validator/opts/array.rb
131
132
  - lib/opt_parse_validator/opts/base.rb
132
133
  - lib/opt_parse_validator/opts/boolean.rb
133
134
  - lib/opt_parse_validator/opts/choice.rb
@@ -150,6 +151,7 @@ files:
150
151
  - spec/fixtures/r.txt
151
152
  - spec/fixtures/rwx.txt
152
153
  - spec/lib/opt_parse_validator/options_file_spec.rb
154
+ - spec/lib/opt_parse_validator/opts/array_spec.rb
153
155
  - spec/lib/opt_parse_validator/opts/base_spec.rb
154
156
  - spec/lib/opt_parse_validator/opts/boolean_spec.rb
155
157
  - spec/lib/opt_parse_validator/opts/choice_spec.rb
@@ -197,6 +199,7 @@ test_files:
197
199
  - spec/fixtures/r.txt
198
200
  - spec/fixtures/rwx.txt
199
201
  - spec/lib/opt_parse_validator/options_file_spec.rb
202
+ - spec/lib/opt_parse_validator/opts/array_spec.rb
200
203
  - spec/lib/opt_parse_validator/opts/base_spec.rb
201
204
  - spec/lib/opt_parse_validator/opts/boolean_spec.rb
202
205
  - spec/lib/opt_parse_validator/opts/choice_spec.rb