yema 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -19,7 +19,14 @@ Or install it yourself as:
19
19
 
20
20
  ## Usage
21
21
 
22
- Standalone:
22
+ Inline:
23
+
24
+ ```ruby
25
+ validator = Yema::Validator.new(params, Yema::Rule::Required.new(:title))
26
+ validator.valid?
27
+ ```
28
+
29
+ Class:
23
30
 
24
31
  ```ruby
25
32
  class User
@@ -27,7 +34,7 @@ class User
27
34
  attr_accessor :age
28
35
  end
29
36
 
30
- User.rules.add(Yema::Rule::StrongType, Integer)
37
+ User.rules.add(Yema::Rule::StrongType.new(:age), Integer)
31
38
 
32
39
  user = User.new
33
40
  user.age = 3
data/lib/yema/rule.rb CHANGED
@@ -13,12 +13,8 @@ module Yema
13
13
  []
14
14
  end
15
15
 
16
- def validate(resource)
17
- Validator.new(self, resource)
18
- end
19
-
20
16
  def errors(resource)
21
- validate(resource).errors
17
+ Validator.new(resource, self).errors
22
18
  end
23
19
 
24
20
  private
@@ -1,23 +1,22 @@
1
1
  module Yema
2
2
  class Validator
3
3
 
4
- attr_reader :rule, :resource
4
+ attr_reader :resource, :rules
5
5
 
6
- def initialize(rule, resource)
7
- @rule, @resource = rule, resource
8
- end
9
-
10
- def value
11
- resource.public_send(rule.attribute_name)
6
+ def initialize(resource, *rules)
7
+ @resource, @rules = resource, rules
12
8
  end
13
9
 
14
10
  def valid?
15
- rule.matches?(value)
11
+ errors.empty?
16
12
  end
17
13
 
18
14
  def errors
19
15
  errors = []
20
- errors << Error.new(rule, resource) unless valid?
16
+ rules.each do |rule|
17
+ value = resource.public_send(rule.attribute_name)
18
+ errors << Error.new(rule, resource) unless rule.matches?(value)
19
+ end
21
20
  errors.to_set
22
21
  end
23
22
 
data/lib/yema/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yema
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -4,12 +4,12 @@ describe Yema::Validator, "#errors" do
4
4
 
5
5
  subject { validator.errors }
6
6
 
7
- let(:validator) { described_class.new(rule, resource) }
8
- let(:rule) { stub('rule') }
9
- let(:resource) { stub('resource') }
7
+ let(:validator) { described_class.new(resource, rule) }
8
+ let(:resource) { stub('resource', foo: 'bar') }
9
+ let(:rule) { stub('rule', attribute_name: :foo) }
10
10
 
11
11
  before do
12
- validator.should_receive(:valid?).and_return(valid)
12
+ rule.should_receive(:matches?).and_return(valid)
13
13
  end
14
14
 
15
15
  context "when the attribute is valid" do
@@ -4,9 +4,9 @@ describe Yema::Validator, "#valid?" do
4
4
 
5
5
  subject { validator.valid? }
6
6
 
7
- let(:validator) { described_class.new(rule, resource) }
8
- let(:rule) { mock('required_rule', attribute_name: :foo) }
7
+ let(:validator) { described_class.new(resource, rule) }
9
8
  let(:resource) { mock('resource', foo: value) }
9
+ let(:rule) { mock('required_rule', attribute_name: :foo) }
10
10
 
11
11
  before do
12
12
  resource.should_receive(:foo).and_return(value)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: yema
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Handi Wiguna