val_required 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -7
- data/lib/val_required/version.rb +1 -1
- data/lib/val_required.rb +17 -10
- data/spec/required_spec.rb +31 -32
- data/val_required.gemspec +0 -2
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d00fca36470a747766eaf8b7792c977454fa7128
|
4
|
+
data.tar.gz: 27080d47c434f9b599201f3a485aeca05429d782
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b6cc87fcb4e8f57c908da8fecfcd9e05f24a0c4fc5da1dd49b75a74e670139db9efcfaddaf4ebf266e9554b6b98d1dc918eb910dcb237d9f73fc66d252b40e6
|
7
|
+
data.tar.gz: 4ac34c71eefd4dc2b39b8f0e82165e89bd0b749ed0dd407273ee46d57b93e782d8520c60a018794bef631644f6a99eeb8467c8ec91d187e49c235a350477a266
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Required!
|
2
2
|
|
3
|
-
This gem adds the
|
3
|
+
This gem adds the method #required! to Object, raises an error if nil or String that doesn't match /\S/, otherwise returns self.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -19,18 +19,22 @@ Or install it yourself as:
|
|
19
19
|
## Usage
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
expect(
|
23
|
-
expect(
|
22
|
+
expect(ValRequired.set?(nil)).to be_false
|
23
|
+
expect(ValRequired.set?("")).to be_false
|
24
|
+
expect(ValRequired.set?(" ")).to be_false
|
25
|
+
# Otherwise true
|
26
|
+
|
27
|
+
expect("token".required!).to_not raise_error
|
24
28
|
|
25
29
|
expect("".required!).to raise_error
|
26
30
|
expect(nil.required!).to raise_error
|
27
|
-
expect(required! nil).to raise_error
|
28
31
|
|
32
|
+
# The return value for each method on c is checked against ValRequired.set?
|
29
33
|
expect do
|
30
|
-
config
|
31
|
-
|
34
|
+
required(config)! do |c|
|
35
|
+
c.api_service_token = "TOKEN"
|
32
36
|
end
|
33
|
-
end
|
37
|
+
end.to_not raise_error
|
34
38
|
```
|
35
39
|
|
36
40
|
## Contributing
|
data/lib/val_required/version.rb
CHANGED
data/lib/val_required.rb
CHANGED
@@ -1,16 +1,20 @@
|
|
1
|
-
# TODO: remove dependency
|
2
|
-
require 'active_support/core_ext/object/blank'
|
3
|
-
|
4
1
|
module ValRequired
|
2
|
+
# Returns false unless non-empty String or other non-nil object.
|
3
|
+
def self.set? obj
|
4
|
+
if obj.instance_of? String
|
5
|
+
!!(obj =~ /\S/)
|
6
|
+
else
|
7
|
+
!obj.nil?
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
5
11
|
module Method
|
6
|
-
def required!(
|
12
|
+
def required!(context=nil)
|
7
13
|
if block_given?
|
8
|
-
yield(RequiredHelper.new(
|
9
|
-
|
10
|
-
raise BlankError.new("argument is blank!") if val.blank?
|
11
|
-
val
|
14
|
+
yield(RequiredHelper.new(context.required!))
|
15
|
+
self
|
12
16
|
else
|
13
|
-
raise BlankError.new("
|
17
|
+
raise BlankError.new("Object is not set: #{self.inspect}") unless ValRequired.set?(self)
|
14
18
|
self
|
15
19
|
end
|
16
20
|
end
|
@@ -18,7 +22,10 @@ module ValRequired
|
|
18
22
|
|
19
23
|
class RequiredHelper < Struct.new(:obj)
|
20
24
|
def method_missing method, *args
|
21
|
-
obj.send(method, *args).required!
|
25
|
+
(res = obj.send(method, *args)).required!
|
26
|
+
|
27
|
+
rescue BlankError
|
28
|
+
raise BlankError, "#{method} returned #{res.inspect}"
|
22
29
|
end
|
23
30
|
end
|
24
31
|
|
data/spec/required_spec.rb
CHANGED
@@ -2,53 +2,52 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
require 'ostruct'
|
4
4
|
|
5
|
-
def does_not_fail val
|
6
|
-
expect { required! val }.to_not raise_error
|
7
|
-
expect { val.required! }.to_not raise_error
|
8
|
-
end
|
9
|
-
|
10
|
-
def fails val
|
11
|
-
expect { val.required! }.to raise_error(ValRequired::BlankError)
|
12
|
-
expect { required!(val) }.to raise_error(ValRequired::BlankError)
|
13
|
-
end
|
14
|
-
|
15
5
|
describe ValRequired do
|
16
|
-
|
17
|
-
|
18
|
-
|
6
|
+
describe ".set?" do
|
7
|
+
def set? obj
|
8
|
+
ValRequired.set?(obj)
|
9
|
+
end
|
19
10
|
|
20
|
-
|
21
|
-
|
11
|
+
def set! obj
|
12
|
+
expect(set? obj).to be_true
|
13
|
+
end
|
22
14
|
|
23
|
-
|
24
|
-
|
25
|
-
|
15
|
+
def not_set! obj
|
16
|
+
expect(set? obj).to be_false
|
17
|
+
end
|
26
18
|
|
27
|
-
|
19
|
+
it { set! "token" }
|
20
|
+
it { set! 2 }
|
21
|
+
it { set! 0 }
|
22
|
+
it { set! false }
|
23
|
+
it { set! true }
|
24
|
+
it { set! [] }
|
25
|
+
it { set!({}) }
|
26
|
+
|
27
|
+
it { not_set! nil }
|
28
|
+
it { not_set! "" }
|
29
|
+
it { not_set! " " }
|
30
|
+
end
|
28
31
|
|
29
|
-
|
30
|
-
expect(
|
32
|
+
it "works with assignment" do
|
33
|
+
expect("token".required!).to eq "token"
|
31
34
|
end
|
32
35
|
|
33
36
|
it "takes a block" do
|
34
|
-
user = OpenStruct.new(
|
37
|
+
user = OpenStruct.new(email: "", name: "Arnold")
|
35
38
|
|
36
|
-
expect {
|
37
|
-
expect {
|
39
|
+
expect { required!(user, &:email) }.to raise_error(ValRequired::BlankError, /email/)
|
40
|
+
expect { required!(user, &:name) }.to_not raise_error
|
38
41
|
end
|
39
42
|
|
40
43
|
it "takes an assignment block (config style)" do
|
41
44
|
config = OpenStruct.new
|
42
|
-
required!
|
43
|
-
config.moo = "moo"
|
44
|
-
end
|
45
|
+
required!(config) {|config| config.service_token = "token" }
|
45
46
|
|
46
|
-
expect(config.
|
47
|
+
expect(config.service_token).to eq "token"
|
47
48
|
|
48
49
|
expect do
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
end.to raise_error
|
50
|
+
required!(config) {|c| c.service_token = "" }
|
51
|
+
end.to raise_error(ValRequired::BlankError, /service_token=/)
|
53
52
|
end
|
54
53
|
end
|
data/val_required.gemspec
CHANGED
@@ -18,8 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency 'active_support'
|
22
|
-
|
23
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
22
|
spec.add_development_dependency "rake"
|
25
23
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: val_required
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frans Krojegård
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: active_support
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: bundler
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|