validates_email_format_of 1.6.1 → 1.7.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.
- checksums.yaml +5 -13
- data/.github/workflows/ci.yml +67 -0
- data/.gitignore +2 -0
- data/Appraisals +32 -0
- data/CHANGELOG +10 -0
- data/README.rdoc +3 -1
- data/config/locales/de.yml +8 -0
- data/config/locales/fr.yml +8 -0
- data/config/locales/it.yml +8 -0
- data/config/locales/ja.yml +8 -0
- data/config/locales/pt-BR.yml +8 -0
- data/config/locales/pt.yml +8 -0
- data/gemfiles/rails_4.2.gemfile +8 -0
- data/gemfiles/rails_5.0.gemfile +8 -0
- data/gemfiles/rails_5.1.gemfile +8 -0
- data/gemfiles/rails_5.2.gemfile +8 -0
- data/gemfiles/rails_6.0.gemfile +7 -0
- data/gemfiles/rails_6.1.gemfile +7 -0
- data/gemfiles/rails_7.0.gemfile +7 -0
- data/lib/validates_email_format_of/active_model.rb +4 -4
- data/lib/validates_email_format_of/railtie.rb +2 -2
- data/lib/validates_email_format_of/rspec_matcher.rb +2 -3
- data/lib/validates_email_format_of/version.rb +1 -1
- data/lib/validates_email_format_of.rb +170 -67
- data/rakefile.rb +4 -1
- data/spec/rspec_matcher_spec.rb +9 -11
- data/spec/spec_helper.rb +6 -10
- data/spec/validates_email_format_of_spec.rb +139 -129
- data/validates_email_format_of.gemspec +25 -18
- metadata +87 -25
- data/.travis.yml +0 -18
- data/gemfiles/Gemfile.active_model_2_1 +0 -5
- data/gemfiles/Gemfile.active_model_3_0 +0 -5
- data/gemfiles/Gemfile.active_model_3_1 +0 -5
- data/gemfiles/Gemfile.active_model_3_2 +0 -5
- data/gemfiles/Gemfile.active_model_3_3 +0 -5
- data/gemfiles/Gemfile.active_model_4_0 +0 -5
- data/gemfiles/Gemfile.active_model_4_1 +0 -5
@@ -1,68 +1,77 @@
|
|
1
|
-
#
|
2
|
-
require "#{File.expand_path(File.dirname(__FILE__))}/spec_helper"
|
1
|
+
require "#{__dir__}/spec_helper"
|
3
2
|
require "validates_email_format_of"
|
4
3
|
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.before(:suite) do
|
6
|
+
ValidatesEmailFormatOf.load_i18n_locales
|
7
|
+
I18n.enforce_available_locales = false
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
5
11
|
describe ValidatesEmailFormatOf do
|
6
12
|
subject do |example|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
user = Class.new do
|
14
|
+
def initialize(email)
|
15
|
+
@email = email.freeze
|
16
|
+
end
|
17
|
+
attr_reader :email
|
18
|
+
include ActiveModel::Validations
|
19
|
+
validates_email_format_of :email, example.example_group_instance.options
|
20
|
+
|
21
|
+
def self.model_name
|
22
|
+
ActiveModel::Name.new(self, nil, "User")
|
15
23
|
end
|
16
|
-
example.example_group_instance.class::User = user
|
17
|
-
user.new(example.example_group_instance.email).tap(&:valid?).errors.full_messages
|
18
|
-
else
|
19
|
-
ValidatesEmailFormatOf::validate_email_format(email.freeze, options)
|
20
24
|
end
|
25
|
+
user.new(example.example_group_instance.email).tap(&:valid?).errors.full_messages
|
21
26
|
end
|
22
27
|
let(:options) { {} }
|
23
28
|
let(:email) { |example| example.example_group.description }
|
24
29
|
|
25
30
|
shared_examples_for :all_specs do
|
26
31
|
[
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
32
|
+
"valid@example.com",
|
33
|
+
"Valid@test.example.com",
|
34
|
+
"valid+valid123@test.example.com",
|
35
|
+
"valid_valid123@test.example.com",
|
36
|
+
"valid-valid+123@test.example.co.uk",
|
37
|
+
"valid-valid+1.23@test.example.com.au",
|
38
|
+
"valid@example.co.uk",
|
39
|
+
"v@example.com",
|
40
|
+
"valid@example.ca",
|
41
|
+
"valid_@example.com",
|
42
|
+
"valid123.456@example.org",
|
43
|
+
"valid123.456@example.travel",
|
44
|
+
"valid123.456@example.museum",
|
45
|
+
"valid@example.mobi",
|
46
|
+
"valid@example.info",
|
47
|
+
"valid-@example.com",
|
48
|
+
"fake@p-t.k12.ok.us",
|
44
49
|
# allow single character domain parts
|
45
|
-
|
46
|
-
|
47
|
-
|
50
|
+
"valid@mail.x.example.com",
|
51
|
+
"valid@x.com",
|
52
|
+
"valid@example.w-dash.sch.uk",
|
48
53
|
# from RFC 3696, page 6
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
54
|
+
"customer/department=shipping@example.com",
|
55
|
+
"$A12345@example.com",
|
56
|
+
"!def!xyz%abc@example.com",
|
57
|
+
"_somename@example.com",
|
53
58
|
# apostrophes
|
54
59
|
"test'test@example.com",
|
55
60
|
# international domain names
|
56
|
-
|
57
|
-
|
58
|
-
|
61
|
+
"test@xn--bcher-kva.ch",
|
62
|
+
"test@example.xn--0zwm56d",
|
63
|
+
"test@192.192.192.1",
|
59
64
|
# Allow quoted characters. Valid according to http://www.rfc-editor.org/errata_search.php?rfc=3696
|
60
65
|
'"Abc\@def"@example.com',
|
66
|
+
'"Quote(Only".Chars@wier.de',
|
61
67
|
'"Fred\ Bloggs"@example.com',
|
62
68
|
'"Joe.\\Blow"@example.com',
|
63
69
|
# Balanced quoted characters
|
64
|
-
|
65
|
-
|
70
|
+
%("example\\\\\\""@example.com),
|
71
|
+
%("example\\\\"@example.com),
|
72
|
+
"(leading comment)email@example.com",
|
73
|
+
"(nested (comment))email@example.com",
|
74
|
+
"email(trailing comment)@example.com"
|
66
75
|
].each do |address|
|
67
76
|
describe address do
|
68
77
|
it { should_not have_errors_on_email }
|
@@ -70,50 +79,54 @@ describe ValidatesEmailFormatOf do
|
|
70
79
|
end
|
71
80
|
|
72
81
|
[
|
73
|
-
|
74
|
-
|
82
|
+
"no_at_symbol",
|
83
|
+
"invalid@example-com",
|
75
84
|
# period can not start local part
|
76
|
-
|
85
|
+
".invalid@example.com",
|
77
86
|
# period can not end local part
|
78
|
-
|
87
|
+
"invalid.@example.com",
|
79
88
|
# period can not appear twice consecutively in local part
|
80
|
-
|
89
|
+
"invali..d@example.com",
|
81
90
|
# should not allow underscores in domain names
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
91
|
+
"invalid@ex_mple.com",
|
92
|
+
"invalid@e..example.com",
|
93
|
+
"invalid@p-t..example.com",
|
94
|
+
"invalid@example.com.",
|
95
|
+
"invalid@example.com_",
|
96
|
+
"invalid@example.com-",
|
97
|
+
"invalid-example.com",
|
98
|
+
"invalid@example.b#r.com",
|
99
|
+
"invalid@example.c",
|
100
|
+
"invali d@example.com",
|
92
101
|
# TLD can not be only numeric
|
93
|
-
|
102
|
+
"invalid@example.123",
|
94
103
|
# unclosed quote
|
95
104
|
"\"a-17180061943-10618354-1993365053@example.com",
|
96
105
|
# too many special chars used to cause the regexp to hang
|
97
106
|
"-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@foo",
|
98
|
-
|
107
|
+
"invalidexample.com",
|
99
108
|
# should not allow special chars after a period in the domain
|
100
|
-
|
101
|
-
|
109
|
+
"local@sub.)domain.com",
|
110
|
+
"local@sub.#domain.com",
|
102
111
|
# one at a time
|
103
112
|
"foo@example.com\nexample@gmail.com",
|
104
|
-
|
113
|
+
"invalid@example.",
|
105
114
|
"\"foo\\\\\"\"@bar.com",
|
106
115
|
"foo@mail.com\r\nfoo@mail.com",
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
116
|
+
"@example.com",
|
117
|
+
"foo@",
|
118
|
+
"foo",
|
119
|
+
"Iñtërnâtiônàlizætiøn@hasnt.happened.to.email",
|
111
120
|
# Escaped characters with quotes. From http://tools.ietf.org/html/rfc3696, page 5. Corrected in http://www.rfc-editor.org/errata_search.php?rfc=3696
|
112
121
|
'Fred\ Bloggs_@example.com',
|
113
122
|
'Abc\@def+@example.com',
|
114
123
|
'Joe.\\Blow@example.com',
|
115
124
|
# Unbalanced quoted characters
|
116
|
-
|
125
|
+
%("example\\\\""example.com),
|
126
|
+
"\nnewline@example.com",
|
127
|
+
" spacesbefore@example.com",
|
128
|
+
"spacesafter@example.com ",
|
129
|
+
"(unbalancedcomment@example.com"
|
117
130
|
].each do |address|
|
118
131
|
describe address do
|
119
132
|
it { should have_errors_on_email.because("does not appear to be a valid e-mail address") }
|
@@ -122,10 +135,10 @@ describe ValidatesEmailFormatOf do
|
|
122
135
|
|
123
136
|
describe do
|
124
137
|
shared_examples_for :local_length_limit do |limit|
|
125
|
-
describe "#{
|
138
|
+
describe "#{"a" * limit}@example.com" do
|
126
139
|
it { should_not have_errors_on_email }
|
127
140
|
end
|
128
|
-
describe "#{
|
141
|
+
describe "#{"a" * (limit + 1)}@example.com" do
|
129
142
|
it { should have_errors_on_email.because("does not appear to be a valid e-mail address") }
|
130
143
|
end
|
131
144
|
end
|
@@ -133,16 +146,16 @@ describe ValidatesEmailFormatOf do
|
|
133
146
|
it_should_behave_like :local_length_limit, 64
|
134
147
|
end
|
135
148
|
describe "when overriding defaults" do
|
136
|
-
let(:options) { {
|
149
|
+
let(:options) { {local_length: 20} }
|
137
150
|
it_should_behave_like :local_length_limit, 20
|
138
151
|
end
|
139
152
|
end
|
140
153
|
describe do
|
141
154
|
shared_examples_for :domain_length_limit do |limit|
|
142
|
-
describe "user@#{
|
155
|
+
describe "user@#{"a." * (limit / 2 - 3)}com" do
|
143
156
|
it { should_not have_errors_on_email }
|
144
157
|
end
|
145
|
-
describe "user@#{
|
158
|
+
describe "user@#{"a." * (limit / 2 + 1)}com" do
|
146
159
|
it { should have_errors_on_email.because("does not appear to be a valid e-mail address") }
|
147
160
|
end
|
148
161
|
end
|
@@ -150,31 +163,35 @@ describe ValidatesEmailFormatOf do
|
|
150
163
|
it_should_behave_like :domain_length_limit, 255
|
151
164
|
end
|
152
165
|
describe "when overriding defaults" do
|
153
|
-
let(:options) { {
|
166
|
+
let(:options) { {domain_length: 100} }
|
154
167
|
it_should_behave_like :domain_length_limit, 100
|
155
168
|
end
|
156
169
|
end
|
157
170
|
|
158
171
|
describe "custom error messages" do
|
159
|
-
describe
|
160
|
-
let(:options) { {
|
161
|
-
it {
|
172
|
+
describe "invalid@example." do
|
173
|
+
let(:options) { {message: "just because I don't like you"} }
|
174
|
+
it {
|
175
|
+
should have_errors_on_email.because("just because I don't like you")
|
176
|
+
}
|
162
177
|
end
|
163
178
|
end
|
164
179
|
|
165
180
|
describe "mx record" do
|
166
|
-
domain = "
|
181
|
+
domain = "example.com"
|
167
182
|
email = "valid@#{domain}"
|
183
|
+
|
168
184
|
describe "when testing" do
|
169
185
|
let(:dns) { double(Resolv::DNS) }
|
170
186
|
let(:mx_record) { [double] }
|
171
187
|
let(:a_record) { [double] }
|
172
188
|
before(:each) do
|
173
189
|
allow(Resolv::DNS).to receive(:open).and_yield(dns)
|
190
|
+
allow(dns).to receive(:"timeouts=").with(3).once
|
174
191
|
allow(dns).to receive(:getresources).with(domain, Resolv::DNS::Resource::IN::MX).once.and_return(mx_record)
|
175
192
|
allow(dns).to receive(:getresources).with(domain, Resolv::DNS::Resource::IN::A).once.and_return(a_record)
|
176
193
|
end
|
177
|
-
let(:options) { {
|
194
|
+
let(:options) { {check_mx: true, check_mx_timeout: 3} }
|
178
195
|
describe "and only an mx record is found" do
|
179
196
|
let(:a_record) { [] }
|
180
197
|
describe email do
|
@@ -199,7 +216,7 @@ describe ValidatesEmailFormatOf do
|
|
199
216
|
it { should have_errors_on_email.because("is not routable") }
|
200
217
|
end
|
201
218
|
describe "with a custom error message" do
|
202
|
-
let(:options) { {
|
219
|
+
let(:options) { {check_mx: true, mx_message: "There ain't no such domain!"} }
|
203
220
|
describe email do
|
204
221
|
it { should have_errors_on_email.because("There ain't no such domain!") }
|
205
222
|
end
|
@@ -214,22 +231,6 @@ describe ValidatesEmailFormatOf do
|
|
214
231
|
it { should have_errors_on_email.because("jest nieosiągalny") }
|
215
232
|
end
|
216
233
|
end
|
217
|
-
unless defined?(ActiveModel)
|
218
|
-
describe email do
|
219
|
-
let(:locale) { :ir }
|
220
|
-
describe email do
|
221
|
-
it { should have_errors_on_email.because("is not routable") }
|
222
|
-
end
|
223
|
-
end
|
224
|
-
end
|
225
|
-
end
|
226
|
-
unless defined?(ActiveModel)
|
227
|
-
describe "without i18n" do
|
228
|
-
before(:each) { hide_const("I18n") }
|
229
|
-
describe email do
|
230
|
-
it { should have_errors_on_email.because("is not routable") }
|
231
|
-
end
|
232
|
-
end
|
233
234
|
end
|
234
235
|
end
|
235
236
|
end
|
@@ -242,25 +243,25 @@ describe ValidatesEmailFormatOf do
|
|
242
243
|
end
|
243
244
|
describe "explicitly" do
|
244
245
|
describe email do
|
245
|
-
let(:options) { {
|
246
|
+
let(:options) { {check_mx: false} }
|
246
247
|
it { should_not have_errors_on_email }
|
247
248
|
end
|
248
249
|
end
|
249
250
|
end
|
250
251
|
describe "without mocks" do
|
251
252
|
describe email do
|
252
|
-
let(:options) { {
|
253
|
+
let(:options) { {check_mx: true} }
|
253
254
|
it { should_not have_errors_on_email }
|
254
255
|
end
|
255
256
|
end
|
256
257
|
end
|
257
258
|
|
258
259
|
describe "custom regex" do
|
259
|
-
let(:options) { {
|
260
|
-
describe
|
260
|
+
let(:options) { {with: /[0-9]+@[0-9]+/} }
|
261
|
+
describe "012345@789" do
|
261
262
|
it { should_not have_errors_on_email }
|
262
263
|
end
|
263
|
-
describe
|
264
|
+
describe "valid@example.com" do
|
264
265
|
it { should have_errors_on_email.because("does not appear to be a valid e-mail address") }
|
265
266
|
end
|
266
267
|
end
|
@@ -275,42 +276,51 @@ describe ValidatesEmailFormatOf do
|
|
275
276
|
it { should have_errors_on_email.because("nieprawidłowy adres e-mail") }
|
276
277
|
end
|
277
278
|
end
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
279
|
+
end
|
280
|
+
end
|
281
|
+
it_should_behave_like :all_specs
|
282
|
+
|
283
|
+
describe "validation without ActiveModel" do
|
284
|
+
subject do
|
285
|
+
ValidatesEmailFormatOf.validate_email_format(email.freeze, options)
|
286
|
+
end
|
287
|
+
|
288
|
+
describe "valid@example.com" do
|
289
|
+
it { should be_nil }
|
290
|
+
end
|
291
|
+
|
292
|
+
describe "custom error messages" do
|
293
|
+
describe "invalid@example." do
|
294
|
+
let(:options) { {message: "just because I don't like you"} }
|
295
|
+
it { should match_array(["just because I don't like you"]) }
|
285
296
|
end
|
286
297
|
end
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
end
|
298
|
+
|
299
|
+
describe "without i18n" do
|
300
|
+
before(:each) { hide_const("I18n") }
|
301
|
+
describe "invalid@exmaple." do
|
302
|
+
it { should match_array(["does not appear to be valid"]) }
|
293
303
|
end
|
294
304
|
end
|
295
305
|
end
|
296
|
-
it_should_behave_like :all_specs
|
297
306
|
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
@email = email.freeze
|
304
|
-
end
|
305
|
-
attr_reader :email
|
306
|
-
include ActiveModel::Validations
|
307
|
-
validates :email, :email_format => example.example_group_instance.options
|
307
|
+
describe "shorthand ActiveModel validation" do
|
308
|
+
subject do |example|
|
309
|
+
user = Class.new do
|
310
|
+
def initialize(email)
|
311
|
+
@email = email.freeze
|
308
312
|
end
|
309
|
-
|
310
|
-
|
311
|
-
|
313
|
+
attr_reader :email
|
314
|
+
include ActiveModel::Validations
|
315
|
+
validates :email, email_format: example.example_group_instance.options
|
312
316
|
|
313
|
-
|
317
|
+
def self.model_name
|
318
|
+
ActiveModel::Name.new(self, nil, "User")
|
319
|
+
end
|
320
|
+
end
|
321
|
+
user.new(example.example_group_instance.email).tap(&:valid?).errors.full_messages
|
314
322
|
end
|
323
|
+
|
324
|
+
it_should_behave_like :all_specs
|
315
325
|
end
|
316
326
|
end
|
@@ -1,21 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'validates_email_format_of/version'
|
1
|
+
$:.unshift File.expand_path("../lib", __FILE__)
|
2
|
+
require "validates_email_format_of/version"
|
4
3
|
|
5
|
-
|
6
|
-
s.name
|
7
|
-
s.version
|
8
|
-
s.summary
|
9
|
-
s.description
|
10
|
-
s.authors
|
11
|
-
s.email
|
12
|
-
s.homepage
|
13
|
-
s.license
|
14
|
-
s.
|
15
|
-
s.
|
16
|
-
s.require_paths = ['lib']
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "validates_email_format_of"
|
6
|
+
s.version = ValidatesEmailFormatOf::VERSION
|
7
|
+
s.summary = "Validate e-mail addresses against RFC 2822 and RFC 3696."
|
8
|
+
s.description = s.summary
|
9
|
+
s.authors = ["Alex Dunae", "Isaac Betesh"]
|
10
|
+
s.email = ["code@dunae.ca", "iybetesh@gmail.com"]
|
11
|
+
s.homepage = "https://github.com/validates-email-format-of/validates_email_format_of"
|
12
|
+
s.license = "MIT"
|
13
|
+
s.files = `git ls-files`.split($/)
|
14
|
+
s.require_paths = ["lib"]
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
if RUBY_VERSION < "1.9.3"
|
17
|
+
s.add_dependency "i18n", "< 0.7.0"
|
18
|
+
else
|
19
|
+
s.add_dependency "i18n"
|
20
|
+
end
|
21
|
+
|
22
|
+
s.add_development_dependency "activemodel"
|
23
|
+
s.add_development_dependency "bundler"
|
24
|
+
s.add_development_dependency "rspec"
|
25
|
+
s.add_development_dependency "standard"
|
26
|
+
s.add_development_dependency "appraisal"
|
27
|
+
s.add_development_dependency "pry-byebug"
|
21
28
|
end
|
metadata
CHANGED
@@ -1,56 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_email_format_of
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Dunae
|
8
8
|
- Isaac Betesh
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-07-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: i18n
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: activemodel
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
26
40
|
- !ruby/object:Gem::Version
|
27
41
|
version: '0'
|
28
42
|
- !ruby/object:Gem::Dependency
|
29
43
|
name: bundler
|
30
44
|
requirement: !ruby/object:Gem::Requirement
|
31
45
|
requirements:
|
32
|
-
- -
|
46
|
+
- - ">="
|
33
47
|
- !ruby/object:Gem::Version
|
34
48
|
version: '0'
|
35
49
|
type: :development
|
36
50
|
prerelease: false
|
37
51
|
version_requirements: !ruby/object:Gem::Requirement
|
38
52
|
requirements:
|
39
|
-
- -
|
53
|
+
- - ">="
|
40
54
|
- !ruby/object:Gem::Version
|
41
55
|
version: '0'
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: rspec
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
45
59
|
requirements:
|
46
|
-
- -
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: standard
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: appraisal
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: pry-byebug
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
47
103
|
- !ruby/object:Gem::Version
|
48
104
|
version: '0'
|
49
105
|
type: :development
|
50
106
|
prerelease: false
|
51
107
|
version_requirements: !ruby/object:Gem::Requirement
|
52
108
|
requirements:
|
53
|
-
- -
|
109
|
+
- - ">="
|
54
110
|
- !ruby/object:Gem::Version
|
55
111
|
version: '0'
|
56
112
|
description: Validate e-mail addresses against RFC 2822 and RFC 3696.
|
@@ -61,22 +117,29 @@ executables: []
|
|
61
117
|
extensions: []
|
62
118
|
extra_rdoc_files: []
|
63
119
|
files:
|
64
|
-
- .
|
65
|
-
- .
|
66
|
-
- .
|
120
|
+
- ".github/workflows/ci.yml"
|
121
|
+
- ".gitignore"
|
122
|
+
- ".rspec"
|
123
|
+
- Appraisals
|
67
124
|
- CHANGELOG
|
68
125
|
- Gemfile
|
69
126
|
- MIT-LICENSE
|
70
127
|
- README.rdoc
|
128
|
+
- config/locales/de.yml
|
71
129
|
- config/locales/en.yml
|
130
|
+
- config/locales/fr.yml
|
131
|
+
- config/locales/it.yml
|
132
|
+
- config/locales/ja.yml
|
72
133
|
- config/locales/pl.yml
|
73
|
-
-
|
74
|
-
-
|
75
|
-
- gemfiles/
|
76
|
-
- gemfiles/
|
77
|
-
- gemfiles/
|
78
|
-
- gemfiles/
|
79
|
-
- gemfiles/
|
134
|
+
- config/locales/pt-BR.yml
|
135
|
+
- config/locales/pt.yml
|
136
|
+
- gemfiles/rails_4.2.gemfile
|
137
|
+
- gemfiles/rails_5.0.gemfile
|
138
|
+
- gemfiles/rails_5.1.gemfile
|
139
|
+
- gemfiles/rails_5.2.gemfile
|
140
|
+
- gemfiles/rails_6.0.gemfile
|
141
|
+
- gemfiles/rails_6.1.gemfile
|
142
|
+
- gemfiles/rails_7.0.gemfile
|
80
143
|
- lib/validates_email_format_of.rb
|
81
144
|
- lib/validates_email_format_of/active_model.rb
|
82
145
|
- lib/validates_email_format_of/railtie.rb
|
@@ -91,24 +154,23 @@ homepage: https://github.com/validates-email-format-of/validates_email_format_of
|
|
91
154
|
licenses:
|
92
155
|
- MIT
|
93
156
|
metadata: {}
|
94
|
-
post_install_message:
|
157
|
+
post_install_message:
|
95
158
|
rdoc_options: []
|
96
159
|
require_paths:
|
97
160
|
- lib
|
98
161
|
required_ruby_version: !ruby/object:Gem::Requirement
|
99
162
|
requirements:
|
100
|
-
- -
|
163
|
+
- - ">="
|
101
164
|
- !ruby/object:Gem::Version
|
102
165
|
version: '0'
|
103
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
167
|
requirements:
|
105
|
-
- -
|
168
|
+
- - ">="
|
106
169
|
- !ruby/object:Gem::Version
|
107
170
|
version: '0'
|
108
171
|
requirements: []
|
109
|
-
|
110
|
-
|
111
|
-
signing_key:
|
172
|
+
rubygems_version: 3.1.6
|
173
|
+
signing_key:
|
112
174
|
specification_version: 4
|
113
175
|
summary: Validate e-mail addresses against RFC 2822 and RFC 3696.
|
114
176
|
test_files: []
|