val_required 0.0.3 → 0.1.0

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: 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