yema 0.0.2 → 0.0.3

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