activevalidators 1.2.4 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,61 +1,57 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activevalidators (1.2.4)
5
- activemodel (>= 3.0.0)
6
- activerecord (>= 3.0.0)
7
- date_validator (= 0.5.9)
8
- mail
4
+ activevalidators (1.3.0)
5
+ activemodel (~> 3.0.0)
6
+ activerecord (~> 3.0.0)
7
+ date_validator (~> 0.6.1)
8
+ mail (~> 2.2.15)
9
9
 
10
10
  GEM
11
11
  remote: http://rubygems.org/
12
12
  specs:
13
- activemodel (3.0.3)
14
- activesupport (= 3.0.3)
13
+ activemodel (3.0.5)
14
+ activesupport (= 3.0.5)
15
15
  builder (~> 2.1.2)
16
16
  i18n (~> 0.4)
17
- activerecord (3.0.3)
18
- activemodel (= 3.0.3)
19
- activesupport (= 3.0.3)
17
+ activerecord (3.0.5)
18
+ activemodel (= 3.0.5)
19
+ activesupport (= 3.0.5)
20
20
  arel (~> 2.0.2)
21
21
  tzinfo (~> 0.3.23)
22
- activesupport (3.0.3)
23
- arel (2.0.4)
22
+ activesupport (3.0.5)
23
+ arel (2.0.9)
24
24
  builder (2.1.2)
25
- date_validator (0.5.9)
26
- activemodel (>= 3.0.0)
25
+ date_validator (0.6.1)
26
+ activemodel (~> 3.0.0)
27
27
  diff-lcs (1.1.2)
28
- i18n (0.4.2)
29
- mail (2.2.10)
28
+ i18n (0.5.0)
29
+ mail (2.2.15)
30
30
  activesupport (>= 2.3.6)
31
- i18n (~> 0.4.1)
31
+ i18n (>= 0.4.0)
32
32
  mime-types (~> 1.16)
33
33
  treetop (~> 1.4.8)
34
34
  mime-types (1.16)
35
35
  polyglot (0.3.1)
36
- rspec (2.1.0)
37
- rspec-core (~> 2.1.0)
38
- rspec-expectations (~> 2.1.0)
39
- rspec-mocks (~> 2.1.0)
40
- rspec-core (2.1.0)
41
- rspec-expectations (2.1.0)
36
+ rspec (2.5.0)
37
+ rspec-core (~> 2.5.0)
38
+ rspec-expectations (~> 2.5.0)
39
+ rspec-mocks (~> 2.5.0)
40
+ rspec-core (2.5.1)
41
+ rspec-expectations (2.5.0)
42
42
  diff-lcs (~> 1.1.2)
43
- rspec-mocks (2.1.0)
43
+ rspec-mocks (2.5.0)
44
44
  treetop (1.4.9)
45
45
  polyglot (>= 0.3.1)
46
- tzinfo (0.3.23)
46
+ tzinfo (0.3.25)
47
47
 
48
48
  PLATFORMS
49
49
  java
50
50
  ruby
51
51
 
52
52
  DEPENDENCIES
53
- activemodel (>= 3.0.0)
54
- activerecord (>= 3.0.0)
55
53
  activevalidators!
56
54
  bundler
57
- date_validator (= 0.5.9)
58
- mail
59
55
  rspec
60
56
  rspec-core
61
57
  rspec-expectations
data/README.md CHANGED
@@ -38,7 +38,7 @@ In your models, the gem provides new validators like `email`, or `url`:
38
38
 
39
39
  class Account
40
40
  validates :visa_card, :credit_card => { :type => :visa }
41
- validates :credit_card, :credit_card => { :type => :all }
41
+ validates :credit_card, :credit_card => { :type => :any }
42
42
  end
43
43
 
44
44
 
@@ -46,7 +46,7 @@ Exhaustive list of supported validators and their implementation:
46
46
 
47
47
  * `email` : based on the `mail` gem
48
48
  * `url` : based on a regular expression
49
- * `phone` : based on a regular expression
49
+ * `phone` : based on a set of predefined masks
50
50
  * `twitter` : based on a regular expression
51
51
  * `slug` : based on `ActiveSupport::String#parameterize`
52
52
  * `ip` : based on `Resolv::IPv[4|6]::Regex`
@@ -4,9 +4,9 @@ $:.unshift lib unless $:.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "activevalidators"
7
- s.version = '1.2.4'
7
+ s.version = '1.3.0'
8
8
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Franck Verrot", "Paco Guzmán", "Oriol Gual", "Garrett Bjerkhoel"]
9
+ s.authors = ["Franck Verrot", "Paco Guzmán", "Oriol Gual", "Garrett Bjerkhoel", "Renato Riccieri Santos Zannon"]
10
10
  s.email = ["franck@verrot.fr"]
11
11
  s.homepage = "http://github.com/cesario/activevalidators"
12
12
  s.summary = %q{Collection of ActiveModel/ActiveRecord validations}
@@ -16,10 +16,10 @@ Gem::Specification.new do |s|
16
16
  s.add_development_dependency "rspec"
17
17
  s.add_development_dependency "rspec-core"
18
18
  s.add_development_dependency "rspec-expectations"
19
- s.add_dependency 'activerecord', '>= 3.0.0'
20
- s.add_dependency 'activemodel', '>= 3.0.0'
21
- s.add_dependency 'mail'
22
- s.add_dependency 'date_validator', '0.5.9'
19
+ s.add_dependency 'activerecord' , '~> 3.0.0'
20
+ s.add_dependency 'activemodel' , '~> 3.0.0'
21
+ s.add_dependency 'mail' , '~> 2.2.15'
22
+ s.add_dependency 'date_validator', '~> 0.6.1'
23
23
 
24
24
  s.files = `git ls-files`.split("\n")
25
25
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -2,10 +2,32 @@ module ActiveModel
2
2
  module Validations
3
3
  class PhoneValidator < EachValidator
4
4
  def validate_each(record, attribute, value)
5
- unless value =~ /^\d{3}-\d{3}-\d{4}|\d{3}\.\d{3}\.\d{4}|\d{10}|\d{3}\s\d{3}\s\d{4}|\(\d{3}\)\s\d{3}-\d{4}$/i
5
+ @value = value
6
+ @formats = PhoneValidator.known_formats[options[:country]] || PhoneValidator.known_formats[:us]
7
+ unless matches_any?
6
8
  record.errors.add(attribute)
7
9
  end
8
10
  end
11
+
12
+ def self.known_formats
13
+ @@known_formats ||=
14
+ {:us => ["###-###-####", "##########", "###.###.####", "### ### ####", "(###) ###-####"],
15
+ :brazil => ["## ####-####", "(##) ####-####", "##########"],
16
+ :france => ["## ## ## ## ##"],
17
+ :uk => ["#### ### ####"]}
18
+ end
19
+
20
+ def matches_any?
21
+ false if @formats.nil? or not @formats.respond_to?(:detect)
22
+ @formats.detect { |format| @value.match(PhoneValidator.regexp_from format) }
23
+ end
24
+
25
+ private
26
+
27
+ def self.regexp_from(format)
28
+ Regexp.new "^"+(Regexp.escape format).gsub('\#','\d')+"$"
29
+ end
30
+
9
31
  end
10
32
  end
11
- end
33
+ end
@@ -2,45 +2,68 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
2
2
 
3
3
  describe "Phone Validation" do
4
4
 
5
- before(:each) do
6
- TestRecord.reset_callbacks(:validate)
7
- TestRecord.validates :phone, :phone => true
8
- end
9
-
10
5
  subject { TestRecord.new }
11
6
 
12
- it 'should validate format of phone with ###-###-####' do
13
- subject.phone = '999-999-9999'
14
- subject.should be_valid
15
- subject.should have(0).errors
16
- end
7
+ context "when no country is given" do
8
+ before(:each) do
9
+ TestRecord.reset_callbacks(:validate)
10
+ TestRecord.validates :phone, :phone => true
11
+ end
17
12
 
18
- it 'should validate format of phone with ##########' do
19
- subject.phone = '9999999999'
20
- subject.should be_valid
21
- subject.should have(0).errors
22
- end
13
+ it 'should validate format of phone with ###-###-####' do
14
+ subject.phone = '999-999-9999'
15
+ subject.should be_valid
16
+ subject.should have(0).errors
17
+ end
23
18
 
24
- it 'should validate format of phone with ###.###.####' do
25
- subject.phone = '999.999.9999'
26
- subject.should be_valid
27
- subject.should have(0).errors
28
- end
19
+ it 'should validate format of phone with ##########' do
20
+ subject.phone = '9999999999'
21
+ subject.should be_valid
22
+ subject.should have(0).errors
23
+ end
24
+
25
+ it 'should validate format of phone with ###.###.####' do
26
+ subject.phone = '999.999.9999'
27
+ subject.should be_valid
28
+ subject.should have(0).errors
29
+ end
30
+
31
+ it 'should validate format of phone with ### ### ####' do
32
+ subject.phone = '999 999 9999'
33
+ subject.should be_valid
34
+ subject.should have(0).errors
35
+ end
36
+
37
+ it 'should validate format of phone with (###) ###-####' do
38
+ subject.phone = '(999) 999-9999'
39
+ subject.should be_valid
40
+ subject.should have(0).errors
41
+ end
29
42
 
30
- it 'should validate format of phone with ### ### ####' do
31
- subject.phone = '999 999 9999'
32
- subject.should be_valid
33
- subject.should have(0).errors
34
43
  end
35
44
 
36
- it 'should validate format of phone with (###) ###-####' do
37
- subject.phone = '(999) 999-9999'
38
- subject.should be_valid
39
- subject.should have(0).errors
45
+ ActiveModel::Validations::PhoneValidator.known_formats.each do |country, formats|
46
+ context "when given a :#{country} country parameter" do
47
+ before(:each) do
48
+ TestRecord.reset_callbacks(:validate)
49
+ TestRecord.validates :phone, :phone => {:country => country}
50
+ end
51
+
52
+ formats.each do |format|
53
+ it "should validate format of phone with #{format}" do
54
+ subject.phone = format.gsub('#','9')
55
+ subject.should be_valid
56
+ subject.should have(0).errors
57
+ end
58
+ end
59
+ end
40
60
  end
41
61
 
62
+
42
63
  describe "for invalid formats" do
43
64
  before :each do
65
+ TestRecord.reset_callbacks(:validate)
66
+ TestRecord.validates :phone, :phone => true
44
67
  subject.phone = '999'
45
68
  end
46
69
 
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
2
3
 
3
4
  describe "Twitter Validation" do
metadata CHANGED
@@ -1,24 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activevalidators
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 2
9
- - 4
10
- version: 1.2.4
4
+ prerelease:
5
+ version: 1.3.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - Franck Verrot
14
9
  - "Paco Guzm\xC3\xA1n"
15
10
  - Oriol Gual
16
11
  - Garrett Bjerkhoel
12
+ - Renato Riccieri Santos Zannon
17
13
  autorequire:
18
14
  bindir: bin
19
15
  cert_chain: []
20
16
 
21
- date: 2010-12-11 00:00:00 +01:00
17
+ date: 2011-03-20 00:00:00 -04:00
22
18
  default_executable:
23
19
  dependencies:
24
20
  - !ruby/object:Gem::Dependency
@@ -29,9 +25,6 @@ dependencies:
29
25
  requirements:
30
26
  - - ">="
31
27
  - !ruby/object:Gem::Version
32
- hash: 3
33
- segments:
34
- - 0
35
28
  version: "0"
36
29
  type: :development
37
30
  version_requirements: *id001
@@ -43,9 +36,6 @@ dependencies:
43
36
  requirements:
44
37
  - - ">="
45
38
  - !ruby/object:Gem::Version
46
- hash: 3
47
- segments:
48
- - 0
49
39
  version: "0"
50
40
  type: :development
51
41
  version_requirements: *id002
@@ -57,9 +47,6 @@ dependencies:
57
47
  requirements:
58
48
  - - ">="
59
49
  - !ruby/object:Gem::Version
60
- hash: 3
61
- segments:
62
- - 0
63
50
  version: "0"
64
51
  type: :development
65
52
  version_requirements: *id003
@@ -71,9 +58,6 @@ dependencies:
71
58
  requirements:
72
59
  - - ">="
73
60
  - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
61
  version: "0"
78
62
  type: :development
79
63
  version_requirements: *id004
@@ -83,13 +67,8 @@ dependencies:
83
67
  requirement: &id005 !ruby/object:Gem::Requirement
84
68
  none: false
85
69
  requirements:
86
- - - ">="
70
+ - - ~>
87
71
  - !ruby/object:Gem::Version
88
- hash: 7
89
- segments:
90
- - 3
91
- - 0
92
- - 0
93
72
  version: 3.0.0
94
73
  type: :runtime
95
74
  version_requirements: *id005
@@ -99,13 +78,8 @@ dependencies:
99
78
  requirement: &id006 !ruby/object:Gem::Requirement
100
79
  none: false
101
80
  requirements:
102
- - - ">="
81
+ - - ~>
103
82
  - !ruby/object:Gem::Version
104
- hash: 7
105
- segments:
106
- - 3
107
- - 0
108
- - 0
109
83
  version: 3.0.0
110
84
  type: :runtime
111
85
  version_requirements: *id006
@@ -115,12 +89,9 @@ dependencies:
115
89
  requirement: &id007 !ruby/object:Gem::Requirement
116
90
  none: false
117
91
  requirements:
118
- - - ">="
92
+ - - ~>
119
93
  - !ruby/object:Gem::Version
120
- hash: 3
121
- segments:
122
- - 0
123
- version: "0"
94
+ version: 2.2.15
124
95
  type: :runtime
125
96
  version_requirements: *id007
126
97
  - !ruby/object:Gem::Dependency
@@ -129,14 +100,9 @@ dependencies:
129
100
  requirement: &id008 !ruby/object:Gem::Requirement
130
101
  none: false
131
102
  requirements:
132
- - - "="
103
+ - - ~>
133
104
  - !ruby/object:Gem::Version
134
- hash: 25
135
- segments:
136
- - 0
137
- - 5
138
- - 9
139
- version: 0.5.9
105
+ version: 0.6.1
140
106
  type: :runtime
141
107
  version_requirements: *id008
142
108
  description: ActiveValidators is a collection of ActiveModel/ActiveRecord validations
@@ -192,23 +158,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
158
  requirements:
193
159
  - - ">="
194
160
  - !ruby/object:Gem::Version
195
- hash: 3
196
- segments:
197
- - 0
198
161
  version: "0"
199
162
  required_rubygems_version: !ruby/object:Gem::Requirement
200
163
  none: false
201
164
  requirements:
202
165
  - - ">="
203
166
  - !ruby/object:Gem::Version
204
- hash: 3
205
- segments:
206
- - 0
207
167
  version: "0"
208
168
  requirements: []
209
169
 
210
170
  rubyforge_project:
211
- rubygems_version: 1.3.7
171
+ rubygems_version: 1.6.0
212
172
  signing_key:
213
173
  specification_version: 3
214
174
  summary: Collection of ActiveModel/ActiveRecord validations