validates_telephone 0.0.1
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/.gitignore +4 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.rdoc +19 -0
- data/Rakefile +7 -0
- data/lib/validates_telephone.rb +8 -0
- data/lib/validates_telephone/telephone.rb +24 -0
- data/lib/validates_telephone/version.rb +3 -0
- data/spec/fake_app/admin.rb +2 -0
- data/spec/fake_app/db/create_admins.rb +11 -0
- data/spec/fake_app/db/create_users.rb +11 -0
- data/spec/fake_app/user.rb +3 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/validates_telephone/telephone_spec.rb +51 -0
- data/spec/validates_telephone_spec.rb +38 -0
- data/validates_telephone.gemspec +28 -0
- metadata +127 -0
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour --format documentation
|
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3@validates_telephone
|
data/Gemfile
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
= ValidatesTelephone {<img src="https://secure.travis-ci.org/plribeiro3000/validates_telephone.png" />}[http://travis-ci.org/plribeiro3000/validates_telephone]
|
2
|
+
|
3
|
+
Rails gem to validate Telephone.
|
4
|
+
|
5
|
+
== Install
|
6
|
+
|
7
|
+
gem install validates_telephone
|
8
|
+
|
9
|
+
== Usage
|
10
|
+
|
11
|
+
Lets say you have a model with "telephone" string column that you want to be a valid telephone. Just add this to your model:
|
12
|
+
|
13
|
+
class User < ActiveRecord::Base
|
14
|
+
validates :telephone, :telephone => true
|
15
|
+
end
|
16
|
+
|
17
|
+
== Future
|
18
|
+
|
19
|
+
Add Support for other countries. For now it only supports Brazil telephones.
|
data/Rakefile
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
require "active_model"
|
2
|
+
require "validates_telephone/telephone"
|
3
|
+
|
4
|
+
class TelephoneValidator < ActiveModel::EachValidator
|
5
|
+
def validate_each(record, attribute, value)
|
6
|
+
record.errors[attribute] << I18n.t("errors.messages.invalid") unless Telephone.new(value).valid?
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Telephone
|
2
|
+
def initialize(number)
|
3
|
+
@match = number =~ /^(\(?\d{2}\)?)(\d{4})-?(\d{4})$/
|
4
|
+
@number = number
|
5
|
+
@cleaned_number = $1.nil? ? nil : @number.gsub(/[\(\)-]/, "")
|
6
|
+
format_number! if @cleaned_number
|
7
|
+
end
|
8
|
+
|
9
|
+
def valid?
|
10
|
+
return false unless @number.nil? or @match
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def number
|
15
|
+
@number
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def format_number!
|
21
|
+
@cleaned_number =~ /^(\d{2})(\d{4})(\d{4})$/
|
22
|
+
@number = "(#{$1})#{$2}-#{$3}"
|
23
|
+
end
|
24
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "rspec"
|
3
|
+
require "active_record"
|
4
|
+
|
5
|
+
Dir.glob(File.dirname(__FILE__) + "/../lib/**/*.rb").each { |file| require file }
|
6
|
+
Dir.glob(File.dirname(__FILE__) + "/fake_app/**/*.rb").each { |file| require file }
|
7
|
+
|
8
|
+
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
9
|
+
|
10
|
+
CreateUsers.migrate(:up)
|
11
|
+
CreateAdmins.migrate(:up)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Telephone do
|
4
|
+
context "should be invalid with" do
|
5
|
+
it "blank number" do
|
6
|
+
Telephone.new('').should_not be_valid
|
7
|
+
end
|
8
|
+
|
9
|
+
it "123456 as number" do
|
10
|
+
Telephone.new('123456').should_not be_valid
|
11
|
+
end
|
12
|
+
|
13
|
+
it "12345678910 as number" do
|
14
|
+
Telephone.new('12345678910').should_not be_valid
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "should be valid with" do
|
19
|
+
it "nil as number" do
|
20
|
+
Telephone.new(nil).should be_valid
|
21
|
+
end
|
22
|
+
|
23
|
+
it "1111111111 as number" do
|
24
|
+
Telephone.new('1111111111').should be_valid
|
25
|
+
end
|
26
|
+
|
27
|
+
it "(11)11111111 as number" do
|
28
|
+
Telephone.new('(11)11111111').should be_valid
|
29
|
+
end
|
30
|
+
|
31
|
+
it "111111-1111 as number" do
|
32
|
+
Telephone.new('111111-1111').should be_valid
|
33
|
+
end
|
34
|
+
|
35
|
+
it "(11)1111-1111 as number" do
|
36
|
+
Telephone.new('(11)1111-1111').should be_valid
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "with a valid value" do
|
41
|
+
it "should return it formatted" do
|
42
|
+
Telephone.new('1111111111').number.should == '(11)1111-1111'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "with an invalid value" do
|
47
|
+
it "should return as it was" do
|
48
|
+
Telephone.new('123456').number.should == '123456'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe TelephoneValidator do
|
4
|
+
context "when telephone is invalid" do
|
5
|
+
before :each do
|
6
|
+
@user = User.new(:telephone => "12345")
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should set object as invalid" do
|
10
|
+
@user.valid?.should be_false
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should set an error on attribute" do
|
14
|
+
@user.valid?
|
15
|
+
@user.errors[:telephone].should == ['is invalid']
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "when telephone is valid" do
|
20
|
+
before :each do
|
21
|
+
@user = User.new(:telephone => "(11)1111-1111")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should set object as valid" do
|
25
|
+
@user.valid?.should be_true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should not set an error on attribute" do
|
29
|
+
@user.valid?
|
30
|
+
@user.errors[:telephone].should be_blank
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should accept a nil value" do
|
35
|
+
@user = User.new(:telephone => nil)
|
36
|
+
@user.valid?.should be_true
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "validates_telephone/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "validates_telephone"
|
7
|
+
s.version = ValidatesTelephone::VERSION
|
8
|
+
s.authors = ["Paulo Henrique Lopes Ribeiro"]
|
9
|
+
s.email = %q{plribeiro3000@gmail.com}
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Telephone Validation GEM}
|
12
|
+
s.description = %q{Validates Telephone and test it with macros in a simple way.}
|
13
|
+
|
14
|
+
s.add_dependency("activerecord", ">= 3.0.0")
|
15
|
+
|
16
|
+
s.rubyforge_project = "validates_cpf"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.require_paths = %w(lib)
|
22
|
+
|
23
|
+
s.add_development_dependency "rake"
|
24
|
+
s.add_development_dependency "rspec", ">= 2.0.0"
|
25
|
+
s.add_development_dependency "shoulda-matchers", ">= 1.0.0"
|
26
|
+
s.add_development_dependency "remarkable_activerecord", "= 4.0.0.alpha4"
|
27
|
+
s.add_development_dependency "sqlite3"
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: validates_telephone
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Paulo Henrique Lopes Ribeiro
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-21 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activerecord
|
16
|
+
requirement: &6997600 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *6997600
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &6996000 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *6996000
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &6995440 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.0.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *6995440
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: shoulda-matchers
|
49
|
+
requirement: &6994920 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *6994920
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: remarkable_activerecord
|
60
|
+
requirement: &6994420 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - =
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 4.0.0.alpha4
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *6994420
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sqlite3
|
71
|
+
requirement: &6993960 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *6993960
|
80
|
+
description: Validates Telephone and test it with macros in a simple way.
|
81
|
+
email: plribeiro3000@gmail.com
|
82
|
+
executables: []
|
83
|
+
extensions: []
|
84
|
+
extra_rdoc_files: []
|
85
|
+
files:
|
86
|
+
- .gitignore
|
87
|
+
- .rspec
|
88
|
+
- .rvmrc
|
89
|
+
- Gemfile
|
90
|
+
- README.rdoc
|
91
|
+
- Rakefile
|
92
|
+
- lib/validates_telephone.rb
|
93
|
+
- lib/validates_telephone/telephone.rb
|
94
|
+
- lib/validates_telephone/version.rb
|
95
|
+
- spec/fake_app/admin.rb
|
96
|
+
- spec/fake_app/db/create_admins.rb
|
97
|
+
- spec/fake_app/db/create_users.rb
|
98
|
+
- spec/fake_app/user.rb
|
99
|
+
- spec/spec_helper.rb
|
100
|
+
- spec/validates_telephone/telephone_spec.rb
|
101
|
+
- spec/validates_telephone_spec.rb
|
102
|
+
- validates_telephone.gemspec
|
103
|
+
homepage: ''
|
104
|
+
licenses: []
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubyforge_project: validates_cpf
|
123
|
+
rubygems_version: 1.8.10
|
124
|
+
signing_key:
|
125
|
+
specification_version: 3
|
126
|
+
summary: Telephone Validation GEM
|
127
|
+
test_files: []
|