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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c186595ba205deac0604e32d3426cfa6808dfcb6
4
- data.tar.gz: 979dae2227b0f98c9d8c0d33f10c7ae0838c28d7
3
+ metadata.gz: d00fca36470a747766eaf8b7792c977454fa7128
4
+ data.tar.gz: 27080d47c434f9b599201f3a485aeca05429d782
5
5
  SHA512:
6
- metadata.gz: 608367b9f54474ac01c4298a976cc5a5baf54f37a60cc790d451555d88b2b420d0a8dc90a49ac683884275a0e0286dc37679c02fd9c9405524dbe6b4f1c57907
7
- data.tar.gz: 13044c01216fd7d015e6e0306a32f50573492146273be7463c85f227f00c03e3b29f3b17eb657ef1c52fa950829ec00ef790cc91dd555bf9f36989b4adf2b69d
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 methods required!(val) to main object as well as val.required!. See usage.
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("moo".required!).to_not raise_error
23
- expect(required! "moo").to_not raise_error
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.required! do |obj|
31
- obj.api_service_token # Raises an error if #blank?
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
@@ -1,3 +1,3 @@
1
1
  module ValRequired
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
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!(val = (val_not_set = true; nil))
12
+ def required!(context=nil)
7
13
  if block_given?
8
- yield(RequiredHelper.new(self))
9
- elsif !val_not_set
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("object is blank") if self.blank?
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
 
@@ -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
- it { does_not_fail "moo" }
17
- it { does_not_fail 2 }
18
- it { does_not_fail 0 }
6
+ describe ".set?" do
7
+ def set? obj
8
+ ValRequired.set?(obj)
9
+ end
19
10
 
20
- it { fails nil }
21
- it { fails "" }
11
+ def set! obj
12
+ expect(set? obj).to be_true
13
+ end
22
14
 
23
- it "works with assignment" do
24
- m = "moo".required!
25
- expect(m).to eq "moo"
15
+ def not_set! obj
16
+ expect(set? obj).to be_false
17
+ end
26
18
 
27
- expect { required!("") }.to raise_error
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
- m = required!("moo")
30
- expect(m).to eq "moo"
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(moo: "mo", fish: "")
37
+ user = OpenStruct.new(email: "", name: "Arnold")
35
38
 
36
- expect { user.required!(&:fish) }.to raise_error
37
- expect { user.required!(&:moo) }.to_not raise_error
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! do
43
- config.moo = "moo"
44
- end
45
+ required!(config) {|config| config.service_token = "token" }
45
46
 
46
- expect(config.moo).to eq "moo"
47
+ expect(config.service_token).to eq "token"
47
48
 
48
49
  expect do
49
- config.required! do |c|
50
- c.moo = ""
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.3
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-12 00:00:00.000000000 Z
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