email_address 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5129f7fbc9c34749550a07cf447c0ae0ec1fadf711af9aa2f1dc193c0e1c5322
4
- data.tar.gz: 5fb49593e6ad95576d400d9f4d3918fa2949b52a44540454c5016ccce00ca695
3
+ metadata.gz: 24b689ac0a16f073c42a43b3f6e49c42e472c1fbef31290fa4c41f26389f3f51
4
+ data.tar.gz: 7ba8fb68fa0e71a9821d08c8bb5e40ecd5acc625acebc707b4beb4f25240d628
5
5
  SHA512:
6
- metadata.gz: cd741fa47ed63923c1cb83bce7139efe5469282d24c57bc987eda9e4686d89ac8aaa650b815324005cb792342395002c29648c0439ad5d4341bb0ae80fb58352
7
- data.tar.gz: '0194608171e7fd2dcc68c1fb827ce12051a7cfc9e42d47cef6935503b0a6ae5f257b36e30bd977201b60193bfffa0a55bf7a11a039c8c9c5f90395cb9225cc59'
6
+ metadata.gz: 4514eb116e370d6e3b4bf9ae006178dae86884228ff66053a0ecd8834943d6ab4a3dc8d6ef658c2c080090a1cb28343e3c3eeb1531bc4a3cedb532ac09dee470
7
+ data.tar.gz: 146e6a106d2f3c3f6c73661b28b4371078d2a529b05fc09d2078aea64f3ce25ff036b91364f244c12fe037ac62ad02f1dbbbeed1d378dfd87a74624714d91d5b
@@ -2,7 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - ruby-head
4
4
  - 2.3.7
5
- - jruby-9.0.4.0
5
+ - jruby-9.2.9.0
6
6
  #- rbx
7
7
 
8
8
  addons:
data/README.md CHANGED
@@ -429,11 +429,14 @@ matches against the Mail Exchanger (SMTP receivers) hosts defined in
429
429
  DNS. If you specify an exchanger pattern, but requires a DNS MX lookup.
430
430
 
431
431
  For Rails application, create an initializer file with your default
432
- configuration options:
432
+ configuration options.
433
+ EmailAddress::Config.setting takes a single setting name and value,
434
+ while EmailAddress::Config.configure takes a hash of multiple settings.
433
435
 
434
436
  ```ruby
435
437
  # ./config/initializers/email_address.rb
436
- EmailAddress::Config.setting( local_format: :relaxed )
438
+ EmailAddress::Config.setting( :local_format, :relaxed )
439
+ EmailAddress::Config.configure( local_format: :relaxed, ... )
437
440
  EmailAddress::Config.provider(:github,
438
441
  host_match: %w(github.com), local_format: :standard)
439
442
  ```
data/Rakefile CHANGED
@@ -1,6 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
- require "bundler/gem_tasks"
4
3
  require "bundler/setup"
5
4
  require 'rake/testtask'
6
5
 
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "minitest", "~> 5.11"
23
- spec.add_development_dependency "bundler", "~> 1.16.0"
23
+ spec.add_development_dependency "bundler" #, "~> 1.16.0"
24
24
  if RUBY_PLATFORM == 'java'
25
25
  spec.add_development_dependency "activerecord", "= 4.2.10"
26
26
  spec.add_development_dependency "activerecord-jdbcsqlite3-adapter", '~> 1.3.24'
@@ -28,8 +28,9 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency "activerecord", "~> 5.2.0"
29
29
  spec.add_development_dependency "sqlite3"
30
30
  end
31
- spec.add_development_dependency "codeclimate-test-reporter"
31
+ #spec.add_development_dependency "codeclimate-test-reporter"
32
+ spec.add_development_dependency "simplecov"
32
33
 
33
34
  spec.add_dependency "simpleidn"
34
- spec.add_dependency "netaddr", "~> 2.0"
35
+ spec.add_dependency "netaddr", '>= 2.0.4', '< 3'
35
36
  end
@@ -288,7 +288,7 @@ module EmailAddress
288
288
 
289
289
  # Does "example." match any tld?
290
290
  def registration_name_matches?(rule)
291
- self.registration_name + '.' == rule ? true : false
291
+ "#{self.registration_name}." == rule ? true : false
292
292
  end
293
293
 
294
294
  # Does "sub.example.com" match ".com" and ".example.com" top level names?
@@ -305,8 +305,8 @@ module EmailAddress
305
305
  # Requires optionally starts with a "@".
306
306
  def domain_matches?(rule)
307
307
  rule = $1 if rule =~ /\A@(.+)/
308
- return rule if File.fnmatch?(rule, self.domain_name)
309
- return rule if File.fnmatch?(rule, self.dns_name)
308
+ return rule if File.fnmatch?(rule, self.domain_name) if self.domain_name
309
+ return rule if File.fnmatch?(rule, self.dns_name) if self.dns_name
310
310
  false
311
311
  end
312
312
 
@@ -315,12 +315,10 @@ module EmailAddress
315
315
  def ip_matches?(cidr)
316
316
  return false unless self.ip_address
317
317
  return cidr if !cidr.include?("/") && cidr == self.ip_address
318
-
319
- c = NetAddr::CIDR.create(cidr)
320
318
  if cidr.include?(":") && self.ip_address.include?(":")
321
- return cidr if c.matches?(self.ip_address)
319
+ return cidr if NetAddr::IPv6Net.parse(cidr).contains(NetAddr::IPv6.parse(self.ip_address))
322
320
  elsif cidr.include?(".") && self.ip_address.include?(".")
323
- return cidr if c.matches?(self.ip_address)
321
+ return cidr if NetAddr::IPv4Net.parse(cidr).contains(NetAddr::IPv4.parse(self.ip_address))
324
322
  end
325
323
  false
326
324
  end
@@ -82,12 +82,12 @@ module EmailAddress
82
82
  STANDARD_MAX_SIZE = 64
83
83
 
84
84
  # Conventional : word([.-+'_]word)*
85
- CONVENTIONAL_MAILBOX_REGEX = /\A [\p{L}\p{N}]+ (?: [\.\-\+\'_] [\p{L}\p{N}]+ )* \z/x
86
- CONVENTIONAL_MAILBOX_WITHIN = /[\p{L}\p{N}]+ (?: [\.\-\+\'_] [\p{L}\p{N}]+ )*/x
85
+ CONVENTIONAL_MAILBOX_REGEX = /\A [\p{L}\p{N}_]+ (?: [\.\-\+\'_] [\p{L}\p{N}_]+ )* \z/x
86
+ CONVENTIONAL_MAILBOX_WITHIN = /[\p{L}\p{N}_]+ (?: [\.\-\+\'_] [\p{L}\p{N}_]+ )*/x
87
87
 
88
88
  # Relaxed: same characters, relaxed order
89
- RELAXED_MAILBOX_WITHIN = /[\p{L}\p{N}]+ (?: [\.\-\+\'_]+ [\p{L}\p{N}]+ )*/x
90
- RELAXED_MAILBOX_REGEX = /\A [\p{L}\p{N}]+ (?: [\.\-\+\'_]+ [\p{L}\p{N}]+ )* \z/x
89
+ RELAXED_MAILBOX_WITHIN = /[\p{L}\p{N}_]+ (?: [\.\-\+\'_]+ [\p{L}\p{N}_]+ )*/x
90
+ RELAXED_MAILBOX_REGEX = /\A [\p{L}\p{N}_]+ (?: [\.\-\+\'_]+ [\p{L}\p{N}_]+ )* \z/x
91
91
 
92
92
  # RFC5322 Token: token."token".token (dot-separated tokens)
93
93
  # Quoted Token can also have: SPACE \" \\ ( ) , : ; < > @ [ \ ] .
@@ -1,3 +1,3 @@
1
1
  module EmailAddress
2
- VERSION = "0.1.11"
2
+ VERSION = "0.1.12"
3
3
  end
@@ -89,6 +89,20 @@ class TestHost < MiniTest::Test
89
89
  assert_equal 'yah*.jp', h.matches?("yah*.jp")
90
90
  end
91
91
 
92
+ def test_ipv4_matches
93
+ h = EmailAddress::Host.new("[123.123.123.8]", host_allow_ip:true)
94
+ assert_equal "123.123.123.8", h.ip_address
95
+ assert_equal false, h.matches?("127.0.0.0/8")
96
+ assert_equal '123.123.123.0/24', h.matches?("123.123.123.0/24")
97
+ end
98
+
99
+ def test_ipv6_matches
100
+ h = EmailAddress::Host.new("[IPV6:2001:db8::1]", host_allow_ip:true)
101
+ assert_equal "2001:db8::1", h.ip_address
102
+ assert_equal false, h.matches?("2002:db8::/118")
103
+ assert_equal '2001:db8::/118', h.matches?("2001:db8::/118")
104
+ end
105
+
92
106
  def test_regexen
93
107
  assert "asdf.com".match EmailAddress::Host::CANONICAL_HOST_REGEX
94
108
  assert "xn--5ca.com".match EmailAddress::Host::CANONICAL_HOST_REGEX
@@ -42,7 +42,7 @@ class TestLocal < MiniTest::Test
42
42
  assert EmailAddress::Local.new("first..last", local_format: :relaxed).valid?, "relax.."
43
43
  assert EmailAddress::Local.new("first.-last", local_format: :relaxed).valid?, "relax.-"
44
44
  assert EmailAddress::Local.new("a", local_format: :relaxed).valid?, "relax single"
45
- assert ! EmailAddress::Local.new("firstlast_", local_format: :relaxed).valid?, "last_"
45
+ assert EmailAddress::Local.new("firstlast_", local_format: :relaxed).valid?, "last_"
46
46
  end
47
47
 
48
48
  def test_unicode
@@ -99,4 +99,10 @@ class TestLocal < MiniTest::Test
99
99
  assert EmailAddress.valid?("xxxxx+subscriber@gmail.com")
100
100
  end
101
101
 
102
+ def test_ending_underscore
103
+ assert EmailAddress.valid?("name_@icloud.com")
104
+ assert EmailAddress.valid?("username_@gmail.com")
105
+ assert EmailAddress.valid?("username_____@gmail.com")
106
+ end
107
+
102
108
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email_address
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Fair
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-12 00:00:00.000000000 Z
11
+ date: 2019-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.16.0
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.16.0
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activerecord
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: codeclimate-test-reporter
84
+ name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -112,16 +112,22 @@ dependencies:
112
112
  name: netaddr
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 2.0.4
118
+ - - "<"
116
119
  - !ruby/object:Gem::Version
117
- version: '2.0'
120
+ version: '3'
118
121
  type: :runtime
119
122
  prerelease: false
120
123
  version_requirements: !ruby/object:Gem::Requirement
121
124
  requirements:
122
- - - "~>"
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 2.0.4
128
+ - - "<"
123
129
  - !ruby/object:Gem::Version
124
- version: '2.0'
130
+ version: '3'
125
131
  description: The EmailAddress Gem to work with and validate email addresses.
126
132
  email:
127
133
  - allen.fair@gmail.com
@@ -177,8 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
183
  - !ruby/object:Gem::Version
178
184
  version: '0'
179
185
  requirements: []
180
- rubyforge_project:
181
- rubygems_version: 2.7.6
186
+ rubygems_version: 3.0.6
182
187
  signing_key:
183
188
  specification_version: 4
184
189
  summary: This gem provides a ruby language library for working with and validating