phonelib 0.6.21 → 0.6.22
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.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/data/extended_data.dat +0 -0
- data/data/phone_data.dat +0 -0
- data/lib/phonelib/data_importer.rb +1 -1
- data/lib/phonelib/version.rb +1 -1
- data/lib/validators/phone_validator.rb +40 -22
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73b3d8a14f0b8759fd8b6bef0535a46b7a9d0731
|
4
|
+
data.tar.gz: ae495d47f1ad7b0d6c2cd28f54ce665cef40fc22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da7be7fee93026ad690e049a1e5afe825222756f82c9770a3918d1ef9e31f937c17e5af1fc0377c34b7b97da6a1b9296dfd33e4f4588bf634ca95a453a07a1c4
|
7
|
+
data.tar.gz: 1254c4b20dbdd079151f4bbbf0378192ba0b80d5af02dc9c5f20bc9b6549712bb82d3f596406817b9ff51550fc0192ab01e9051192904f20f41fb29c5dcc2058
|
data/README.md
CHANGED
@@ -109,6 +109,9 @@ Refer to [Google libphonenumber](http://code.google.com/p/libphonenumber/) for m
|
|
109
109
|
<tt>types: :mobile</tt> or <tt>types: [:voip, :mobile]</tt> - allows to validate against specific phone types patterns,
|
110
110
|
if mixed with <tt>possible</tt> will check if number is possible for specified type
|
111
111
|
|
112
|
+
<tt>countries: :us</tt> or <tt>countries: [:us, :ca]</tt> - allows to validate against specific countries,
|
113
|
+
if mixed with <tt>possible</tt> will check if number is possible for specified countries
|
114
|
+
|
112
115
|
<tt>country_specifier: -> phone { phone.country.try(:upcase) }</tt> - allows to specify country for validation dynamically for each validation.
|
113
116
|
|
114
117
|
<tt>extensions: false</tt> - set to perform check for phone extension to be blank
|
data/data/extended_data.dat
CHANGED
Binary file
|
data/data/phone_data.dat
CHANGED
Binary file
|
@@ -18,7 +18,7 @@ module Phonelib
|
|
18
18
|
include Phonelib::DataImporterHelper
|
19
19
|
|
20
20
|
# countries that can have double country prefix in number
|
21
|
-
DOUBLE_COUNTRY_CODES_COUNTRIES = %w(IN DE BR IT NO)
|
21
|
+
DOUBLE_COUNTRY_CODES_COUNTRIES = %w(IN DE BR IT NO PL)
|
22
22
|
|
23
23
|
# main data file in repo
|
24
24
|
MAIN_FILE = 'resources/PhoneNumberMetadata.xml'
|
data/lib/phonelib/version.rb
CHANGED
@@ -36,6 +36,13 @@
|
|
36
36
|
# validates :mobile, phone: { possible: true, types: :mobile }
|
37
37
|
# end
|
38
38
|
#
|
39
|
+
# validates that phone is valid and it is from specified country or countries
|
40
|
+
#
|
41
|
+
# class Phone < ActiveRecord::Base
|
42
|
+
# attr_accessible :number
|
43
|
+
# validates :number, phone: { countries: [:us, :ca] }
|
44
|
+
# end
|
45
|
+
#
|
39
46
|
# Validates that attribute does not include an extension.
|
40
47
|
# The default setting is to allow extensions
|
41
48
|
#
|
@@ -51,19 +58,9 @@ class PhoneValidator < ActiveModel::EachValidator
|
|
51
58
|
# Validation method
|
52
59
|
def validate_each(record, attribute, value)
|
53
60
|
return if options[:allow_blank] && value.blank?
|
54
|
-
allowed_extensions = options.has_key?(:extensions) ? options[:extensions] : true
|
55
61
|
|
56
|
-
phone = parse(value, specified_country(record))
|
57
|
-
valid =
|
58
|
-
phone.send(validate_method)
|
59
|
-
else
|
60
|
-
(phone_types(phone) & types).size > 0
|
61
|
-
end
|
62
|
-
|
63
|
-
# We default to not-allowing extensions for fax numbers
|
64
|
-
if valid && !allowed_extensions && !phone.extension.empty?
|
65
|
-
valid = false
|
66
|
-
end
|
62
|
+
@phone = parse(value, specified_country(record))
|
63
|
+
valid = phone_valid? && valid_types? && valid_country? && valid_extensions?
|
67
64
|
|
68
65
|
record.errors.add(attribute, message, options) unless valid
|
69
66
|
end
|
@@ -74,8 +71,23 @@ class PhoneValidator < ActiveModel::EachValidator
|
|
74
71
|
options[:message] || :invalid
|
75
72
|
end
|
76
73
|
|
77
|
-
def
|
78
|
-
options[:possible] ? :possible? : :valid?
|
74
|
+
def phone_valid?
|
75
|
+
@phone.send(options[:possible] ? :possible? : :valid?)
|
76
|
+
end
|
77
|
+
|
78
|
+
def valid_types?
|
79
|
+
return true unless options[:types]
|
80
|
+
(phone_types & types).size > 0
|
81
|
+
end
|
82
|
+
|
83
|
+
def valid_country?
|
84
|
+
return true unless options[:countries]
|
85
|
+
(phone_countries & countries).size > 0
|
86
|
+
end
|
87
|
+
|
88
|
+
def valid_extensions?
|
89
|
+
return true if !options.has_key?(:extensions) || options[:extensions]
|
90
|
+
@phone.extension.empty?
|
79
91
|
end
|
80
92
|
|
81
93
|
def specified_country(record)
|
@@ -84,24 +96,30 @@ class PhoneValidator < ActiveModel::EachValidator
|
|
84
96
|
end
|
85
97
|
|
86
98
|
# @private
|
87
|
-
def
|
88
|
-
options[:types].nil?
|
89
|
-
end
|
90
|
-
|
91
|
-
# @private
|
92
|
-
# @param phone [Phonelib::Phone] parsed phone
|
93
|
-
def phone_types(phone)
|
99
|
+
def phone_types
|
94
100
|
method = options[:possible] ? :possible_types : :types
|
95
|
-
phone_types = phone.send(method)
|
101
|
+
phone_types = @phone.send(method)
|
96
102
|
if (phone_types & [Phonelib::Core::FIXED_OR_MOBILE]).size > 0
|
97
103
|
phone_types += [Phonelib::Core::FIXED_LINE, Phonelib::Core::MOBILE]
|
98
104
|
end
|
99
105
|
phone_types
|
100
106
|
end
|
101
107
|
|
108
|
+
# @private
|
109
|
+
def phone_countries
|
110
|
+
method = options[:possible] ? :countries : :valid_countries
|
111
|
+
@phone.send(method)
|
112
|
+
end
|
113
|
+
|
102
114
|
# @private
|
103
115
|
def types
|
104
116
|
types = options[:types].is_a?(Array) ? options[:types] : [options[:types]]
|
105
117
|
types.map(&:to_sym)
|
106
118
|
end
|
119
|
+
|
120
|
+
# @private
|
121
|
+
def countries
|
122
|
+
countries = options[:countries].is_a?(Array) ? options[:countries] : [options[:countries]]
|
123
|
+
countries.map { |c| c.to_s.upcase }
|
124
|
+
end
|
107
125
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phonelib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vadim Senderovich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
169
|
version: '0'
|
170
170
|
requirements: []
|
171
171
|
rubyforge_project:
|
172
|
-
rubygems_version: 2.6.
|
172
|
+
rubygems_version: 2.6.14
|
173
173
|
signing_key:
|
174
174
|
specification_version: 4
|
175
175
|
summary: Gem validates phone numbers with Google libphonenumber database
|