vjt-email_validator 1.5.1 → 1.5.2
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/lib/email_validator.rb +11 -2
- data/test/email_validator_test.rb +11 -0
- metadata +4 -4
data/lib/email_validator.rb
CHANGED
@@ -7,9 +7,14 @@ class EmailValidator < ActiveModel::EachValidator
|
|
7
7
|
local_part_special_chars = Regexp.escape('!#$%&\'*-/=?+-^_`{|}~')
|
8
8
|
local_part_unquoted = '(?:[[:alnum:]' + local_part_special_chars + ']+[\.\+])*[[:alnum:]' + local_part_special_chars + '+]'
|
9
9
|
local_part_quoted = '\"(?:[[:alnum:]' + local_part_special_chars + '\.]|\\\\[\x00-\xFF])*\"'
|
10
|
-
domain_part = '@(?:(?:(?:\w+\-+[^_])|(?:\w+\.[a-z0-9-]*))*(?:[a-z0-9-]{1,63})\.[a-z]{2,6}(?:\.[a-z]{2,6})?'
|
11
|
-
|
10
|
+
domain_part = '@(?:(?:(?:\w+\-+[^_])|(?:\w+\.[a-z0-9-]*))*(?:[a-z0-9-]{1,63})\.[a-z]{2,6}(?:\.[a-z]{2,6})?)'
|
11
|
+
|
12
|
+
email_address_regexp = '(?:' + local_part_unquoted + '+|' + local_part_quoted + '+)' + domain_part
|
13
|
+
|
14
|
+
Pattern = Regexp.new('\A' + email_address_regexp + '\Z', Regexp::EXTENDED | Regexp::IGNORECASE, 'n').freeze
|
15
|
+
Scanner = Regexp.new( email_address_regexp, Regexp::EXTENDED | Regexp::IGNORECASE, 'n').freeze
|
12
16
|
Separator = /[;,\s]\s*/.freeze # for multiple e-mail addresses
|
17
|
+
|
13
18
|
Defaults = {
|
14
19
|
:message => I18n.t(:invalid_email_address, :scope => [:activerecord, :errors, :messages], :default => 'does not appear to be a valid e-mail address'),
|
15
20
|
:multiple_message => I18n.t(:invalid_multiple_email, :scope => [:activerecord, :errors, :messages], :default => 'appears to contain an invalid e-mail address'),
|
@@ -49,6 +54,10 @@ class EmailValidator < ActiveModel::EachValidator
|
|
49
54
|
end
|
50
55
|
|
51
56
|
class << self
|
57
|
+
def extract(string)
|
58
|
+
string.scan(Scanner)
|
59
|
+
end
|
60
|
+
|
52
61
|
def valid?(email, options = {})
|
53
62
|
errors_on(email, options).nil?
|
54
63
|
end
|
@@ -146,6 +146,17 @@ class EmailValidatorTest < TEST_CASE
|
|
146
146
|
assert_equal false, EmailValidator.valid?('valid@example.com', :domain_length => 1)
|
147
147
|
end
|
148
148
|
|
149
|
+
def test_scanning_of_addresses
|
150
|
+
assert_equal ['vjt@openssl.it', 'alex@dunae.ca'], EmailValidator.extract(%[
|
151
|
+
foo bar antani tapioca vjt@openssl.it
|
152
|
+
blatantly@wrong and.ano@ther-hey49039403.4930
|
153
|
+
alex@dunae.ca hey man can I haz chunky bacon?!
|
154
|
+
:-)
|
155
|
+
])
|
156
|
+
|
157
|
+
assert_equal ['foo@example.org'], EmailValidator.extract('foo@example.org')
|
158
|
+
end
|
159
|
+
|
149
160
|
protected
|
150
161
|
def create_person(params)
|
151
162
|
Person.new(params)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vjt-email_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 1.5.
|
9
|
+
- 2
|
10
|
+
version: 1.5.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Marcello Barnaba
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-03-03 00:00:00 +01:00
|
20
20
|
default_executable:
|
21
21
|
dependencies: []
|
22
22
|
|