yema 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -34,7 +34,7 @@ class User
34
34
  attr_accessor :age
35
35
  end
36
36
 
37
- User.rules.add(Yema::Rule::StrongType.new(:age), Integer)
37
+ User.rules.add(Yema::Rule::StrongType.new(:age, type: Integer))
38
38
 
39
39
  user = User.new
40
40
  user.age = 3
@@ -8,6 +8,8 @@ require 'yema/validations'
8
8
  require 'yema/validator'
9
9
  require 'yema/registry/rule'
10
10
 
11
+ require 'yema/utils/type_matcher'
12
+
11
13
  require 'yema/rule'
12
14
  require 'yema/rule/required'
13
15
  require 'yema/rule/format'
@@ -14,23 +14,14 @@ module Yema
14
14
  end
15
15
 
16
16
  def matches?(value)
17
- return allow_nil_rule(value) if strict == :allow_nil
18
- if type == TrueClass || type == FalseClass
19
- boolean_matches?(value)
20
- elsif value.kind_of?(Array)
21
- array_matches?(value)
22
- else
23
- value.kind_of?(type)
24
- end
17
+ raise ArgumentError if member_type && !value.respond_to?(:all?)
18
+
19
+ return true if (strict == :allow_nil && value.nil?)
20
+ Utils.type_matches?(value, type) && member_type_matches?(value)
25
21
  end
26
22
 
27
23
  private
28
24
 
29
- def allow_nil_rule(value)
30
- return true if value.nil?
31
- value.kind_of?(type)
32
- end
33
-
34
25
  def extract_options(options)
35
26
  @type = options.fetch(:type)
36
27
  @member_type = options.fetch(:member_type, nil)
@@ -42,16 +33,9 @@ module Yema
42
33
  raise InvalidOptionError, "Strict option only accept [:high, :allow_nil]" unless [:high, :allow_nil].include?(strict)
43
34
  end
44
35
 
45
- def boolean_matches?(value)
46
- value.equal?(true) || value.equal?(false)
47
- end
48
-
49
- def array_matches?(value)
50
- if member_type
51
- value.kind_of?(Array) && value.all? { |v| v.kind_of?(member_type) }
52
- else
53
- value.kind_of?(Array)
54
- end
36
+ def member_type_matches?(value)
37
+ return value.all?{ |v| Utils.type_matches?(v, member_type) } if member_type
38
+ true
55
39
  end
56
40
  end
57
41
  end
@@ -0,0 +1,11 @@
1
+ module Yema
2
+ module Utils
3
+ def self.type_matches?(value, type)
4
+ if type == TrueClass || type == FalseClass
5
+ value.equal?(true) || value.equal?(false)
6
+ else
7
+ value.kind_of?(type)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Yema
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
  gem.add_development_dependency "rspec"
21
21
  gem.add_development_dependency "rake"
22
22
  gem.add_development_dependency "simplecov"
23
+ gem.add_development_dependency "debugger"
23
24
 
24
25
  gem.add_runtime_dependency "virtus", "0.5.4"
25
26
  gem.add_runtime_dependency "equalizer", "0.0.2"
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: yema
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Handi Wiguna
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-01 00:00:00.000000000 Z
12
+ date: 2013-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,6 +59,22 @@ dependencies:
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  none: false
62
+ - !ruby/object:Gem::Dependency
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ none: false
69
+ name: debugger
70
+ type: :development
71
+ prerelease: false
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ none: false
62
78
  - !ruby/object:Gem::Dependency
63
79
  version_requirements: !ruby/object:Gem::Requirement
64
80
  requirements:
@@ -115,6 +131,7 @@ files:
115
131
  - lib/yema/rule/length.rb
116
132
  - lib/yema/rule/required.rb
117
133
  - lib/yema/rule/strong_type.rb
134
+ - lib/yema/utils/type_matcher.rb
118
135
  - lib/yema/validations.rb
119
136
  - lib/yema/validator.rb
120
137
  - lib/yema/version.rb