validates_phone_number 0.9.3 → 1.0.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.
- data/.travis.yml +7 -0
- data/README.markdown +36 -4
- data/Rakefile +11 -0
- data/lib/validates_phone_number.rb +1 -6
- data/lib/validates_phone_number/message.rb +12 -0
- data/lib/validates_phone_number/validator.rb +5 -1
- data/lib/validates_phone_number/version.rb +1 -1
- data/test/test_helper.rb +17 -1
- data/test/validates_phone_number/validator_test.rb +12 -4
- metadata +12 -10
data/.travis.yml
ADDED
data/README.markdown
CHANGED
@@ -1,15 +1,47 @@
|
|
1
|
+
[](http://travis-ci.org/travisjeffery/validates_phone_number)
|
2
|
+
|
1
3
|
# Validates Phone Number
|
2
4
|
|
3
|
-
validates_phone_number adds validation methods to ActiveModel for validating
|
5
|
+
`validates_phone_number` adds validation methods to ActiveModel for validating
|
4
6
|
phone numbers.
|
5
7
|
|
6
|
-
|
8
|
+
### Basic Usage
|
9
|
+
|
10
|
+
Given a User model with a phone number attribute of `phone number`
|
7
11
|
that's a string, see if a given record has a valid phone number like so:
|
8
12
|
|
9
13
|
```
|
10
14
|
class Person < ActiveRecord::Base
|
11
|
-
validates :
|
15
|
+
validates :mobile, :phone_number => true
|
12
16
|
end
|
13
17
|
```
|
14
18
|
|
15
|
-
|
19
|
+
### Message
|
20
|
+
|
21
|
+
Specify the message that's added to the errors collection by using the
|
22
|
+
`message` option:
|
23
|
+
|
24
|
+
```
|
25
|
+
class Person < ActiveRecord::Base
|
26
|
+
validates :mobile, :phone_number => {:message => "invalid and can only be attributable to human error"}
|
27
|
+
end
|
28
|
+
```
|
29
|
+
|
30
|
+
### Format/Match by Regular Expression
|
31
|
+
|
32
|
+
You can specify that a number matches a regular expression by using the
|
33
|
+
`format` option:
|
34
|
+
|
35
|
+
```
|
36
|
+
class Person < ActiveRecord::Base
|
37
|
+
validates :mobile, :phone_number => {:format => /\d{3}-\d{3}-\d{4}/}
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
### Allow Nil
|
42
|
+
|
43
|
+
```
|
44
|
+
class Person < ActiveRecord::Base
|
45
|
+
validates :mobile, :phone_number => {:allow_nil => true}
|
46
|
+
end
|
47
|
+
```
|
data/Rakefile
CHANGED
@@ -1,10 +1,5 @@
|
|
1
1
|
require 'phone'
|
2
2
|
Phoner::Phone.default_country_code = '1'
|
3
3
|
require_relative "validates_phone_number/version"
|
4
|
+
require_relative "validates_phone_number/message"
|
4
5
|
require_relative "validates_phone_number/validator"
|
5
|
-
require 'phone'
|
6
|
-
|
7
|
-
|
8
|
-
module ValidatesPhoneNumber
|
9
|
-
# Your code goes here...
|
10
|
-
end
|
@@ -2,10 +2,13 @@ require 'active_model/validator'
|
|
2
2
|
|
3
3
|
module ValidatesPhoneNumber
|
4
4
|
class Validator < ActiveModel::EachValidator
|
5
|
+
include ValidatesPhoneNumber::Message
|
6
|
+
|
5
7
|
def initialize options
|
6
8
|
@type = options.delete(:type) || :string
|
7
9
|
@allow_nil = options.delete(:allow_nil)
|
8
10
|
@format = options.delete(:format)
|
11
|
+
@message = options.delete(:message)
|
9
12
|
super
|
10
13
|
end
|
11
14
|
|
@@ -13,7 +16,8 @@ module ValidatesPhoneNumber
|
|
13
16
|
return if @allow_nil && value.nil?
|
14
17
|
return if Phoner::Phone.valid? value
|
15
18
|
return if value =~ @format
|
16
|
-
|
19
|
+
message = error_message_for value
|
20
|
+
record.errors.add attr_name, message
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,25 @@
|
|
1
|
+
unless Kernel.respond_to?(:require_relative)
|
2
|
+
module Kernel
|
3
|
+
def require_relative(path)
|
4
|
+
require File.join(File.dirname(caller[0]), path.to_str)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
1
9
|
ENV['RAILS_ENV'] = 'minitest'
|
2
|
-
|
10
|
+
begin
|
11
|
+
require 'minitest/autorun'
|
12
|
+
rescue LoadError
|
13
|
+
require 'rubygems'
|
14
|
+
require 'minitest/unit'
|
15
|
+
MiniTest::Unit.autorun
|
16
|
+
end
|
17
|
+
|
3
18
|
require 'active_model'
|
4
19
|
require 'active_model/validations'
|
5
20
|
require 'active_record'
|
6
21
|
require 'action_view'
|
22
|
+
|
7
23
|
require_relative '../lib/validates_phone_number'
|
8
24
|
|
9
25
|
ActiveRecord::Base.establish_connection({:adapter => 'sqlite3', :database => ':memory:'})
|
@@ -23,28 +23,36 @@ class TestValidator < MiniTest::Unit::TestCase
|
|
23
23
|
assert @person.valid?
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def test_allow_nil_option_defaults_to_false
|
27
27
|
Person.validates :phone_number, :phone_number => true
|
28
28
|
@person.phone_number = nil
|
29
29
|
assert !@person.valid?
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def test_nil_is_record_record_if_allow_nil
|
33
33
|
Person.validates :phone_number, :phone_number => {:allow_nil => true}
|
34
34
|
@person.phone_number = nil
|
35
35
|
assert @person.valid?
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
38
|
+
def test_invalid_record_by_format_option
|
39
39
|
Person.validates :phone_number, :phone_number => true
|
40
40
|
@person.phone_number = "555^555^555^5555"
|
41
41
|
assert !@person.valid?
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
44
|
+
def test_valid_record_by_format_option
|
45
45
|
Person.validates :phone_number, :phone_number => {:format => /(\d+\^){3}\d+/}
|
46
46
|
@person.phone_number = "555^555^555^5555"
|
47
47
|
assert @person.valid?
|
48
48
|
end
|
49
|
+
|
50
|
+
def test_specify_message
|
51
|
+
Person.validates :phone_number, :phone_number => {:message => "invalid and can only be attributable to human error"}
|
52
|
+
@person.phone_number = nil
|
53
|
+
@person.valid?
|
54
|
+
assert_equal 1, @person.errors.size
|
55
|
+
assert_match /invalid and can only be attributable to human error/, @person.errors.full_messages.first
|
56
|
+
end
|
49
57
|
end
|
50
58
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_phone_number
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
16
|
-
requirement: &
|
16
|
+
requirement: &70335761603660 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.10.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70335761603660
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &70335761603140 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.1.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70335761603140
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: phone
|
38
|
-
requirement: &
|
38
|
+
requirement: &70335761602660 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - =
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.1'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70335761602660
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: phone
|
49
|
-
requirement: &
|
49
|
+
requirement: &70335761602200 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - =
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '1.1'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70335761602200
|
58
58
|
description: Adds validation methods to ActiveModel for validating phone numbers.
|
59
59
|
email:
|
60
60
|
- t@travisjeffery.com
|
@@ -63,10 +63,12 @@ extensions: []
|
|
63
63
|
extra_rdoc_files: []
|
64
64
|
files:
|
65
65
|
- .gitignore
|
66
|
+
- .travis.yml
|
66
67
|
- Gemfile
|
67
68
|
- README.markdown
|
68
69
|
- Rakefile
|
69
70
|
- lib/validates_phone_number.rb
|
71
|
+
- lib/validates_phone_number/message.rb
|
70
72
|
- lib/validates_phone_number/validator.rb
|
71
73
|
- lib/validates_phone_number/version.rb
|
72
74
|
- test/test_helper.rb
|