mail_address 1.2.14 → 1.2.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -1
- data/lib/mail_address/mail_address.rb +4 -0
- data/lib/mail_address/simple_parser.rb +4 -0
- data/lib/mail_address/version.rb +1 -1
- data/spec/mail_address_spec.rb +385 -393
- data/spec/simple_parser_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -3
- 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: 178331c0a94b43c78dae091e6072d33399aea7d6
|
4
|
+
data.tar.gz: 88a14c0c1c218dac32e973350e36f7fbf7b02c47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0641e7d194b1981985a8110e315d1caa19b19ae20ca21daac89b35ecb5a33cb1889bae67f27812d954c26fffada29bb166cab245e4e2257271f7032b91a758ad
|
7
|
+
data.tar.gz: 680b3f0c891f5e7a1ad3a5eb359938e05fd428ac6b76f5403a880242ae3f40b4a04b81a99032f432fafc49237e5732f9a1c276cbc50b2e1ce33be761e357bac7
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ But Mail::Address(Perl) has some bad points (below). These are fixed in MailAddr
|
|
14
14
|
- if no ending parenthesis in name part, cannot parse correctly.
|
15
15
|
- Modifications of name part are too much.
|
16
16
|
|
17
|
-
Many people copy and paste email addresses from Excel or the other spreadsheets. In this case, addresses are separated by whitespace(tab or space). To enable to parse this, also ported from a parser part of [Google Closure Library](https://github.com/google/closure-library/blob/master/closure/goog/format/emailaddress.js).
|
17
|
+
Many people copy and paste email addresses from Excel or the other spreadsheets. In this case, addresses are separated by whitespace(tab or space). To enable to parse this, also ported from a parser part of [Google Closure Library](https://github.com/google/closure-library/blob/master/closure/goog/format/emailaddress.js).
|
18
18
|
|
19
19
|
## Installation
|
20
20
|
|
@@ -63,6 +63,15 @@ p addrs[1].original # "大阪 太郎 <osaka@example.jp>"
|
|
63
63
|
`address.name` and `address.phrase` are almost same.
|
64
64
|
`address.phrase` keeps outermost double quotes or parentheses.
|
65
65
|
|
66
|
+
if you specify single email address, you can use `parse_first`.
|
67
|
+
|
68
|
+
```rb
|
69
|
+
line = "John Doe <john@example.com>"
|
70
|
+
addr = MailAddress.parse_first(line)
|
71
|
+
|
72
|
+
p addr.address # "john@example.com"
|
73
|
+
```
|
74
|
+
|
66
75
|
### Parse addresses separated with whitespace
|
67
76
|
|
68
77
|
```rb
|
data/lib/mail_address/version.rb
CHANGED
data/spec/mail_address_spec.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
1
|
require 'spec_helper'
|
3
2
|
require 'pp'
|
4
3
|
|
@@ -7,189 +6,181 @@ describe MailAddress do
|
|
7
6
|
it "normal case (commonly used)" do
|
8
7
|
# address only
|
9
8
|
line = 'johndoe@example.com'
|
10
|
-
|
11
|
-
expect(
|
12
|
-
expect(
|
13
|
-
expect(
|
14
|
-
expect(
|
15
|
-
expect(
|
16
|
-
expect(
|
17
|
-
expect(
|
18
|
-
expect(
|
9
|
+
result = MailAddress.parse_first(line)
|
10
|
+
expect(result.format).to eq('johndoe@example.com')
|
11
|
+
expect(result.format(true)).to eq('johndoe@example.com')
|
12
|
+
expect(result.address).to eq('johndoe@example.com')
|
13
|
+
expect(result.name).to be_nil
|
14
|
+
expect(result.phrase).to eq('')
|
15
|
+
expect(result.host).to eq('example.com')
|
16
|
+
expect(result.user).to eq('johndoe')
|
17
|
+
expect(result.original).to eq(line)
|
19
18
|
|
20
19
|
# <address> only
|
21
20
|
line = '<johndoe@example.com>'
|
22
|
-
|
23
|
-
expect(
|
24
|
-
expect(
|
25
|
-
expect(
|
26
|
-
expect(
|
27
|
-
expect(
|
28
|
-
expect(
|
29
|
-
expect(
|
30
|
-
expect(
|
21
|
+
result = MailAddress.parse_first(line)
|
22
|
+
expect(result.format).to eq('johndoe@example.com')
|
23
|
+
expect(result.format(true)).to eq('johndoe@example.com')
|
24
|
+
expect(result.address).to eq('johndoe@example.com')
|
25
|
+
expect(result.name).to be_nil
|
26
|
+
expect(result.phrase).to eq('')
|
27
|
+
expect(result.host).to eq('example.com')
|
28
|
+
expect(result.user).to eq('johndoe')
|
29
|
+
expect(result.original).to eq(line)
|
31
30
|
|
32
31
|
# name + <address> (single byte only)
|
33
32
|
line = 'John Doe <johndoe@example.com>'
|
34
|
-
|
35
|
-
expect(
|
36
|
-
expect(
|
37
|
-
expect(
|
38
|
-
expect(
|
39
|
-
expect(
|
40
|
-
expect(
|
41
|
-
expect(
|
42
|
-
expect(
|
33
|
+
result = MailAddress.parse_first(line)
|
34
|
+
expect(result.format).to eq('John Doe <johndoe@example.com>')
|
35
|
+
expect(result.format(true)).to eq('John Doe <johndoe@example.com>')
|
36
|
+
expect(result.address).to eq('johndoe@example.com')
|
37
|
+
expect(result.name).to eq('John Doe')
|
38
|
+
expect(result.phrase).to eq('John Doe')
|
39
|
+
expect(result.host).to eq('example.com')
|
40
|
+
expect(result.user).to eq('johndoe')
|
41
|
+
expect(result.original).to eq(line)
|
43
42
|
|
44
43
|
# name + <address> (multi byte)
|
45
44
|
line = 'ジョン ドゥ <johndoe@example.com>'
|
46
|
-
|
47
|
-
expect(
|
48
|
-
expect(
|
49
|
-
expect(
|
50
|
-
expect(
|
51
|
-
expect(
|
52
|
-
expect(
|
53
|
-
expect(
|
54
|
-
expect(
|
45
|
+
result = MailAddress.parse_first(line)
|
46
|
+
expect(result.format).to eq('"ジョン ドゥ" <johndoe@example.com>')
|
47
|
+
expect(result.format(true)).to eq('"ジョン ドゥ" <johndoe@example.com>')
|
48
|
+
expect(result.address).to eq('johndoe@example.com')
|
49
|
+
expect(result.name).to eq('ジョン ドゥ')
|
50
|
+
expect(result.phrase).to eq('ジョン ドゥ')
|
51
|
+
expect(result.host).to eq('example.com')
|
52
|
+
expect(result.user).to eq('johndoe')
|
53
|
+
expect(result.original).to eq(line)
|
55
54
|
|
56
55
|
line = 'Amazon.co.jp アソシエイト・プログラム <associates@amazon.co.jp>'
|
57
|
-
|
58
|
-
expect(
|
59
|
-
expect(
|
60
|
-
expect(
|
61
|
-
expect(
|
62
|
-
expect(
|
63
|
-
expect(
|
64
|
-
expect(
|
65
|
-
expect(
|
56
|
+
result = MailAddress.parse_first(line)
|
57
|
+
expect(result.format).to eq('"Amazon.co.jp アソシエイト・プログラム" <associates@amazon.co.jp>')
|
58
|
+
expect(result.format(true)).to eq('"Amazon.co.jp アソシエイト・プログラム" <associates@amazon.co.jp>')
|
59
|
+
expect(result.address).to eq('associates@amazon.co.jp')
|
60
|
+
expect(result.name).to eq('Amazon.co.jp アソシエイト・プログラム')
|
61
|
+
expect(result.phrase).to eq('Amazon.co.jp アソシエイト・プログラム')
|
62
|
+
expect(result.host).to eq('amazon.co.jp')
|
63
|
+
expect(result.user).to eq('associates')
|
64
|
+
expect(result.original).to eq(line)
|
66
65
|
|
67
66
|
# name (includes parens) + <address>
|
68
67
|
line = 'Example (Twitterより) <notify@twitter.com>'
|
69
|
-
|
70
|
-
expect(
|
71
|
-
expect(
|
72
|
-
expect(
|
73
|
-
expect(
|
74
|
-
expect(
|
75
|
-
expect(
|
76
|
-
expect(
|
77
|
-
expect(
|
68
|
+
result = MailAddress.parse_first(line)
|
69
|
+
expect(result.format).to eq('"Example (Twitterより)" <notify@twitter.com>')
|
70
|
+
expect(result.format(true)).to eq('"Example (Twitterより)" <notify@twitter.com>')
|
71
|
+
expect(result.address).to eq('notify@twitter.com')
|
72
|
+
expect(result.name).to eq('Example (Twitterより)')
|
73
|
+
expect(result.phrase).to eq('Example (Twitterより)')
|
74
|
+
expect(result.host).to eq('twitter.com')
|
75
|
+
expect(result.user).to eq('notify')
|
76
|
+
expect(result.original).to eq(line)
|
78
77
|
|
79
78
|
# name + <address> (multi byte) name is quoted
|
80
79
|
line = '"ジョン ドゥ" <johndoe@example.com>'
|
81
|
-
|
82
|
-
expect(
|
83
|
-
expect(
|
84
|
-
expect(
|
85
|
-
expect(
|
86
|
-
expect(
|
87
|
-
expect(
|
88
|
-
expect(
|
89
|
-
expect(
|
80
|
+
result = MailAddress.parse_first(line)
|
81
|
+
expect(result.format).to eq('"ジョン ドゥ" <johndoe@example.com>')
|
82
|
+
expect(result.format(true)).to eq('"ジョン ドゥ" <johndoe@example.com>')
|
83
|
+
expect(result.address).to eq('johndoe@example.com')
|
84
|
+
expect(result.name).to eq('ジョン ドゥ')
|
85
|
+
expect(result.phrase).to eq('ジョン ドゥ')
|
86
|
+
expect(result.host).to eq('example.com')
|
87
|
+
expect(result.user).to eq('johndoe')
|
88
|
+
expect(result.original).to eq(line)
|
90
89
|
|
91
90
|
# address + (note)
|
92
91
|
line = 'johndoe@example.com (John Doe)'
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
expect(
|
97
|
-
expect(
|
98
|
-
expect(
|
99
|
-
expect(
|
100
|
-
expect(
|
101
|
-
expect(
|
102
|
-
expect(results[0].user).to eq('johndoe')
|
103
|
-
expect(results[0].original).to eq(line)
|
92
|
+
result = MailAddress.parse_first(line)
|
93
|
+
expect(result.format).to eq('"(John Doe)" <johndoe@example.com>')
|
94
|
+
expect(result.format(true)).to eq('"(John Doe)" <johndoe@example.com>')
|
95
|
+
expect(result.address).to eq('johndoe@example.com')
|
96
|
+
expect(result.name).to eq('John Doe')
|
97
|
+
expect(result.phrase).to eq('(John Doe)')
|
98
|
+
expect(result.host).to eq('example.com')
|
99
|
+
expect(result.user).to eq('johndoe')
|
100
|
+
expect(result.original).to eq(line)
|
104
101
|
|
105
102
|
# address + (note) # nested paren
|
106
103
|
line = 'johndoe@example.com (John (Mid) Doe)'
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
expect(
|
111
|
-
expect(
|
112
|
-
expect(
|
113
|
-
expect(
|
114
|
-
expect(
|
115
|
-
expect(
|
116
|
-
expect(results[0].user).to eq('johndoe')
|
117
|
-
expect(results[0].original).to eq(line)
|
104
|
+
result = MailAddress.parse_first(line)
|
105
|
+
expect(result.format).to eq('"(John (Mid) Doe)" <johndoe@example.com>')
|
106
|
+
expect(result.format(true)).to eq('"(John (Mid) Doe)" <johndoe@example.com>')
|
107
|
+
expect(result.address).to eq('johndoe@example.com')
|
108
|
+
expect(result.name).to eq('John (Mid) Doe')
|
109
|
+
expect(result.phrase).to eq('(John (Mid) Doe)')
|
110
|
+
expect(result.host).to eq('example.com')
|
111
|
+
expect(result.user).to eq('johndoe')
|
112
|
+
expect(result.original).to eq(line)
|
118
113
|
|
119
114
|
# address + (note) # note has special char
|
120
115
|
line = 'johndoe@example.com (John@Doe)'
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
expect(
|
125
|
-
expect(
|
126
|
-
expect(
|
127
|
-
expect(
|
128
|
-
expect(
|
129
|
-
expect(
|
130
|
-
expect(results[0].user).to eq('johndoe')
|
131
|
-
expect(results[0].original).to eq(line)
|
116
|
+
result = MailAddress.parse_first(line)
|
117
|
+
expect(result.format).to eq('"(John@Doe)" <johndoe@example.com>')
|
118
|
+
expect(result.format(true)).to eq('"(John@Doe)" <johndoe@example.com>')
|
119
|
+
expect(result.address).to eq('johndoe@example.com')
|
120
|
+
expect(result.name).to eq('John@Doe')
|
121
|
+
expect(result.phrase).to eq('(John@Doe)')
|
122
|
+
expect(result.host).to eq('example.com')
|
123
|
+
expect(result.user).to eq('johndoe')
|
124
|
+
expect(result.original).to eq(line)
|
132
125
|
|
133
126
|
line = 'johndoe@example.com (John, Doe)'
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
expect(
|
138
|
-
expect(
|
139
|
-
expect(
|
140
|
-
expect(
|
141
|
-
expect(
|
142
|
-
expect(
|
143
|
-
expect(results[0].user).to eq('johndoe')
|
144
|
-
expect(results[0].original).to eq(line)
|
127
|
+
result = MailAddress.parse_first(line)
|
128
|
+
expect(result.format).to eq('"(John, Doe)" <johndoe@example.com>')
|
129
|
+
expect(result.format(true)).to eq('"(John, Doe)" <johndoe@example.com>')
|
130
|
+
expect(result.address).to eq('johndoe@example.com')
|
131
|
+
expect(result.name).to eq('John, Doe')
|
132
|
+
expect(result.phrase).to eq('(John, Doe)')
|
133
|
+
expect(result.host).to eq('example.com')
|
134
|
+
expect(result.user).to eq('johndoe')
|
135
|
+
expect(result.original).to eq(line)
|
145
136
|
|
146
137
|
# name + <address> + (note)
|
147
138
|
line = 'John Doe <johndoe@example.com> (Extra)'
|
148
|
-
|
149
|
-
expect(
|
150
|
-
expect(
|
151
|
-
expect(
|
152
|
-
expect(
|
153
|
-
expect(
|
154
|
-
expect(
|
155
|
-
expect(
|
156
|
-
expect(
|
139
|
+
result = MailAddress.parse_first(line)
|
140
|
+
expect(result.format).to eq('"John Doe (Extra)" <johndoe@example.com>')
|
141
|
+
expect(result.format(true)).to eq('"John Doe (Extra)" <johndoe@example.com>')
|
142
|
+
expect(result.address).to eq('johndoe@example.com')
|
143
|
+
expect(result.name).to eq('John Doe (Extra)')
|
144
|
+
expect(result.phrase).to eq('John Doe (Extra)')
|
145
|
+
expect(result.host).to eq('example.com')
|
146
|
+
expect(result.user).to eq('johndoe')
|
147
|
+
expect(result.original).to eq(line)
|
157
148
|
|
158
149
|
# name + <address> (name has starting paren but doesn't have ending paren)
|
159
150
|
line = 'John(Doe <johndoe@example.com>'
|
160
|
-
|
161
|
-
expect(
|
162
|
-
expect(
|
163
|
-
expect(
|
164
|
-
expect(
|
165
|
-
expect(
|
166
|
-
expect(
|
167
|
-
expect(
|
168
|
-
expect(
|
151
|
+
result = MailAddress.parse_first(line)
|
152
|
+
expect(result.format).to eq('"John(Doe" <johndoe@example.com>')
|
153
|
+
expect(result.format(true)).to eq('"John(Doe" <johndoe@example.com>')
|
154
|
+
expect(result.address).to eq('johndoe@example.com')
|
155
|
+
expect(result.name).to eq('John(Doe')
|
156
|
+
expect(result.phrase).to eq('John(Doe')
|
157
|
+
expect(result.host).to eq('example.com')
|
158
|
+
expect(result.user).to eq('johndoe')
|
159
|
+
expect(result.original).to eq(line)
|
169
160
|
|
170
161
|
# ditto
|
171
162
|
line = 'John ( Doe <johndoe@example.com>'
|
172
|
-
|
173
|
-
expect(
|
174
|
-
expect(
|
175
|
-
expect(
|
176
|
-
expect(
|
177
|
-
expect(
|
178
|
-
expect(
|
179
|
-
expect(
|
180
|
-
expect(
|
163
|
+
result = MailAddress.parse_first(line)
|
164
|
+
expect(result.format).to eq('"John ( Doe" <johndoe@example.com>')
|
165
|
+
expect(result.format(true)).to eq('"John ( Doe" <johndoe@example.com>')
|
166
|
+
expect(result.address).to eq('johndoe@example.com')
|
167
|
+
expect(result.name).to eq('John ( Doe')
|
168
|
+
expect(result.phrase).to eq('John ( Doe')
|
169
|
+
expect(result.host).to eq('example.com')
|
170
|
+
expect(result.user).to eq('johndoe')
|
171
|
+
expect(result.original).to eq(line)
|
181
172
|
|
182
173
|
# "address1" <address2>
|
183
174
|
line = '"michael@example.jp" <johndoe@example.com>'
|
184
|
-
|
185
|
-
expect(
|
186
|
-
expect(
|
187
|
-
expect(
|
188
|
-
expect(
|
189
|
-
expect(
|
190
|
-
expect(
|
191
|
-
expect(
|
192
|
-
expect(
|
175
|
+
result = MailAddress.parse_first(line)
|
176
|
+
expect(result.format).to eq('"michael@example.jp" <johndoe@example.com>')
|
177
|
+
expect(result.format(true)).to eq('"michael@example.jp" <johndoe@example.com>')
|
178
|
+
expect(result.address).to eq('johndoe@example.com')
|
179
|
+
expect(result.name).to eq('michael@example.jp')
|
180
|
+
expect(result.phrase).to eq('michael@example.jp')
|
181
|
+
expect(result.host).to eq('example.com')
|
182
|
+
expect(result.user).to eq('johndoe')
|
183
|
+
expect(result.original).to eq(line)
|
193
184
|
end
|
194
185
|
|
195
186
|
it "normal case (multiple address)" do
|
@@ -226,186 +217,187 @@ describe MailAddress do
|
|
226
217
|
it "normal case (rfc-violated(RFC822) but commonly used in AU/DoCoMo)" do
|
227
218
|
# dot before @
|
228
219
|
line = 'johndoe.@example.com' # no double quotes
|
229
|
-
|
220
|
+
result = MailAddress.parse_first(line)
|
230
221
|
|
231
|
-
expect(
|
232
|
-
expect(
|
233
|
-
expect(
|
234
|
-
expect(
|
235
|
-
expect(
|
236
|
-
expect(
|
237
|
-
expect(
|
238
|
-
expect(
|
222
|
+
expect(result.format).to eq('johndoe.@example.com')
|
223
|
+
expect(result.format(true)).to eq('"johndoe."@example.com')
|
224
|
+
expect(result.address).to eq('johndoe.@example.com')
|
225
|
+
expect(result.name).to be_nil
|
226
|
+
expect(result.phrase).to eq('')
|
227
|
+
expect(result.host).to eq('example.com')
|
228
|
+
expect(result.user).to eq('johndoe.')
|
229
|
+
expect(result.original).to eq(line)
|
239
230
|
|
240
231
|
line = '"johndoe."@example.com' # enclosed with double quotes
|
241
|
-
|
232
|
+
result = MailAddress.parse_first(line)
|
242
233
|
|
243
|
-
expect(
|
244
|
-
expect(
|
245
|
-
expect(
|
246
|
-
expect(
|
247
|
-
expect(
|
248
|
-
expect(
|
249
|
-
expect(
|
250
|
-
expect(
|
234
|
+
expect(result.format).to eq('"johndoe."@example.com')
|
235
|
+
expect(result.format(true)).to eq('"johndoe."@example.com')
|
236
|
+
expect(result.address).to eq('"johndoe."@example.com')
|
237
|
+
expect(result.name).to be_nil
|
238
|
+
expect(result.phrase).to eq('')
|
239
|
+
expect(result.host).to eq('example.com')
|
240
|
+
expect(result.user).to eq('"johndoe."')
|
241
|
+
expect(result.original).to eq(line)
|
251
242
|
|
252
243
|
line = 'John Doe <johndoe.@example.com>' # no double quotes
|
253
|
-
|
244
|
+
result = MailAddress.parse_first(line)
|
254
245
|
|
255
|
-
expect(
|
256
|
-
expect(
|
257
|
-
expect(
|
258
|
-
expect(
|
259
|
-
expect(
|
260
|
-
expect(
|
261
|
-
expect(
|
262
|
-
expect(
|
246
|
+
expect(result.format).to eq('John Doe <johndoe.@example.com>')
|
247
|
+
expect(result.format(true)).to eq('John Doe <"johndoe."@example.com>')
|
248
|
+
expect(result.address).to eq('johndoe.@example.com')
|
249
|
+
expect(result.name).to eq('John Doe')
|
250
|
+
expect(result.phrase).to eq('John Doe')
|
251
|
+
expect(result.host).to eq('example.com')
|
252
|
+
expect(result.user).to eq('johndoe.')
|
253
|
+
expect(result.original).to eq(line)
|
263
254
|
|
264
255
|
line = 'John Doe <"johndoe."@example.com>' # enclosed with double quotes
|
265
|
-
|
256
|
+
result = MailAddress.parse_first(line)
|
266
257
|
|
267
|
-
expect(
|
268
|
-
expect(
|
269
|
-
expect(
|
270
|
-
expect(
|
271
|
-
expect(
|
272
|
-
expect(
|
273
|
-
expect(
|
274
|
-
expect(
|
258
|
+
expect(result.format).to eq('John Doe <"johndoe."@example.com>')
|
259
|
+
expect(result.format(true)).to eq('John Doe <"johndoe."@example.com>')
|
260
|
+
expect(result.address).to eq('"johndoe."@example.com')
|
261
|
+
expect(result.name).to eq('John Doe')
|
262
|
+
expect(result.phrase).to eq('John Doe')
|
263
|
+
expect(result.host).to eq('example.com')
|
264
|
+
expect(result.user).to eq('"johndoe."')
|
265
|
+
expect(result.original).to eq(line)
|
275
266
|
|
276
267
|
# contains '..'
|
277
268
|
line = 'john..doe@example.com' # enclosed with double quotes
|
278
|
-
|
269
|
+
result = MailAddress.parse_first(line)
|
279
270
|
|
280
|
-
expect(
|
281
|
-
expect(
|
282
|
-
expect(
|
283
|
-
expect(
|
284
|
-
expect(
|
285
|
-
expect(
|
286
|
-
expect(
|
287
|
-
expect(
|
271
|
+
expect(result.format).to eq('john..doe@example.com')
|
272
|
+
expect(result.format(true)).to eq('"john..doe"@example.com')
|
273
|
+
expect(result.address).to eq('john..doe@example.com')
|
274
|
+
expect(result.name).to be_nil
|
275
|
+
expect(result.phrase).to eq('')
|
276
|
+
expect(result.host).to eq('example.com')
|
277
|
+
expect(result.user).to eq('john..doe')
|
278
|
+
expect(result.original).to eq(line)
|
288
279
|
|
289
280
|
line = '"john..doe"@example.com' # enclosed with double quotes
|
290
|
-
|
281
|
+
result = MailAddress.parse_first(line)
|
291
282
|
|
292
|
-
expect(
|
293
|
-
expect(
|
294
|
-
expect(
|
295
|
-
expect(
|
296
|
-
expect(
|
297
|
-
expect(
|
298
|
-
expect(
|
299
|
-
expect(
|
283
|
+
expect(result.format).to eq('"john..doe"@example.com')
|
284
|
+
expect(result.format(true)).to eq('"john..doe"@example.com')
|
285
|
+
expect(result.address).to eq('"john..doe"@example.com')
|
286
|
+
expect(result.name).to be_nil
|
287
|
+
expect(result.phrase).to eq('')
|
288
|
+
expect(result.host).to eq('example.com')
|
289
|
+
expect(result.user).to eq('"john..doe"')
|
290
|
+
expect(result.original).to eq(line)
|
300
291
|
|
301
292
|
line = 'John Doe <john..doe@example.com>' # no double quotes
|
302
|
-
|
293
|
+
result = MailAddress.parse_first(line)
|
303
294
|
|
304
|
-
expect(
|
305
|
-
expect(
|
306
|
-
expect(
|
307
|
-
expect(
|
308
|
-
expect(
|
309
|
-
expect(
|
310
|
-
expect(
|
311
|
-
expect(
|
295
|
+
expect(result.format).to eq('John Doe <john..doe@example.com>')
|
296
|
+
expect(result.format(true)).to eq('John Doe <"john..doe"@example.com>')
|
297
|
+
expect(result.address).to eq('john..doe@example.com')
|
298
|
+
expect(result.name).to eq('John Doe')
|
299
|
+
expect(result.phrase).to eq('John Doe')
|
300
|
+
expect(result.host).to eq('example.com')
|
301
|
+
expect(result.user).to eq('john..doe')
|
302
|
+
expect(result.original).to eq(line)
|
312
303
|
|
313
304
|
line = 'John Doe <"john..doe"@example.com>' # enclosed with double quotes
|
314
|
-
|
315
|
-
|
316
|
-
expect(
|
317
|
-
expect(
|
318
|
-
expect(
|
319
|
-
expect(
|
320
|
-
expect(
|
321
|
-
expect(
|
322
|
-
expect(
|
323
|
-
expect(
|
305
|
+
result = MailAddress.parse_first(line)
|
306
|
+
|
307
|
+
expect(result.format).to eq('John Doe <"john..doe"@example.com>')
|
308
|
+
expect(result.format(true)).to eq('John Doe <"john..doe"@example.com>')
|
309
|
+
expect(result.address).to eq('"john..doe"@example.com')
|
310
|
+
expect(result.name).to eq('John Doe')
|
311
|
+
expect(result.phrase).to eq('John Doe')
|
312
|
+
expect(result.host).to eq('example.com')
|
313
|
+
expect(result.user).to eq('"john..doe"')
|
314
|
+
expect(result.original).to eq(line)
|
324
315
|
end
|
325
316
|
|
326
317
|
it "Unclosed double quotes" do
|
327
318
|
line = '"john..doe@example.com'
|
328
|
-
|
329
|
-
|
330
|
-
expect(
|
331
|
-
expect(
|
332
|
-
expect(
|
333
|
-
expect(
|
334
|
-
expect(
|
335
|
-
expect(
|
336
|
-
expect(
|
319
|
+
result = MailAddress.parse_first(line)
|
320
|
+
|
321
|
+
expect(result.format).to eq('"john..doe@example.com')
|
322
|
+
expect(result.format(true)).to eq('"john..doe@example.com')
|
323
|
+
expect(result.address).to be_nil
|
324
|
+
expect(result.name).to eq('john..doe@example.com') ## IRREGULAR PATTERN
|
325
|
+
expect(result.phrase).to eq('"john..doe@example.com') ## IRREGULAR PATTERN
|
326
|
+
expect(result.host).to be_nil
|
327
|
+
expect(result.user).to eq("")
|
328
|
+
expect(result.original).to eq(line)
|
337
329
|
|
338
330
|
line = 'john..doe"@example.com'
|
339
|
-
|
340
|
-
expect(
|
341
|
-
expect(
|
342
|
-
expect(
|
343
|
-
expect(
|
344
|
-
expect(
|
345
|
-
expect(
|
346
|
-
expect(
|
347
|
-
expect(
|
331
|
+
result = MailAddress.parse_first(line)
|
332
|
+
expect(result.format).to eq('john..doe"@example.com')
|
333
|
+
expect(result.format(true)).to eq('john..doe"@example.com')
|
334
|
+
expect(result.address).to be_nil
|
335
|
+
expect(result.name).to eq('john..doe"@example.com') ## IRREGULAR PATTERN
|
336
|
+
expect(result.phrase).to eq('john..doe"@example.com') ## IRREGULAR PATTERN
|
337
|
+
expect(result.host).to be_nil
|
338
|
+
expect(result.user).to eq("")
|
339
|
+
expect(result.original).to eq(line)
|
348
340
|
|
349
341
|
#
|
350
342
|
# it takes about 1 minutes in v1.4.5
|
351
343
|
#
|
352
344
|
line = '"ooooooooooooooooo@docomo.ne.jp'
|
353
|
-
|
354
|
-
expect(
|
355
|
-
expect(
|
356
|
-
expect(
|
357
|
-
expect(
|
358
|
-
expect(
|
359
|
-
expect(
|
360
|
-
expect(
|
345
|
+
result = MailAddress.parse_first(line)
|
346
|
+
expect(result.format).to eq('"ooooooooooooooooo@docomo.ne.jp')
|
347
|
+
expect(result.address).to be_nil
|
348
|
+
expect(result.name).to eq('ooooooooooooooooo@docomo.ne.jp') ## IRREGULAR PATTERN
|
349
|
+
expect(result.phrase).to eq('"ooooooooooooooooo@docomo.ne.jp') ## IRREGULAR PATTERN
|
350
|
+
expect(result.host).to be_nil
|
351
|
+
expect(result.user).to eq("")
|
352
|
+
expect(result.original).to eq(line)
|
361
353
|
|
362
354
|
end
|
363
355
|
|
364
356
|
it "unparsable with mail gem (includes non-permitted char'[')" do
|
365
357
|
line = "Ello [Do Not Reply] <do-not-reply@ello.co>"
|
366
|
-
|
367
|
-
expect(
|
368
|
-
expect(
|
369
|
-
expect(
|
370
|
-
expect(
|
371
|
-
expect(
|
372
|
-
expect(
|
373
|
-
expect(
|
358
|
+
result = MailAddress.parse_first(line)
|
359
|
+
expect(result.format).to eq('"Ello [Do Not Reply]" <do-not-reply@ello.co>')
|
360
|
+
expect(result.address).to eq('do-not-reply@ello.co')
|
361
|
+
expect(result.name).to eq('Ello')
|
362
|
+
expect(result.phrase).to eq('Ello [Do Not Reply]')
|
363
|
+
expect(result.host).to eq('ello.co')
|
364
|
+
expect(result.user).to eq('do-not-reply')
|
365
|
+
expect(result.original).to eq(line)
|
374
366
|
|
375
367
|
line = 'MM[天文雑学」編集部 mag2 0000290852 <mailmag@mag2.com>'
|
376
|
-
|
377
|
-
expect(
|
378
|
-
expect(
|
379
|
-
expect(
|
380
|
-
expect(
|
381
|
-
expect(
|
382
|
-
expect(
|
383
|
-
expect(
|
368
|
+
result = MailAddress.parse_first(line)
|
369
|
+
expect(result.format).to eq('"MM[天文雑学」編集部 mag2 0000290852" <mailmag@mag2.com>')
|
370
|
+
expect(result.address).to eq('mailmag@mag2.com')
|
371
|
+
expect(result.name).to eq('MM[天文雑学」編集部 mag2 0000290852')
|
372
|
+
expect(result.phrase).to eq('MM[天文雑学」編集部 mag2 0000290852')
|
373
|
+
expect(result.host).to eq('mag2.com')
|
374
|
+
expect(result.user).to eq('mailmag')
|
375
|
+
expect(result.original).to eq(line)
|
384
376
|
end
|
385
377
|
|
386
378
|
it "unparsable with mail gem (no whitespace before <)" do
|
387
379
|
line = "大阪 太郎<osaka@example.jp>"
|
388
|
-
|
389
|
-
expect(
|
390
|
-
expect(
|
391
|
-
expect(
|
392
|
-
expect(
|
393
|
-
expect(
|
394
|
-
expect(
|
395
|
-
expect(
|
380
|
+
result = MailAddress.parse_first(line)
|
381
|
+
expect(result.format).to eq('"大阪 太郎" <osaka@example.jp>')
|
382
|
+
expect(result.address).to eq('osaka@example.jp')
|
383
|
+
expect(result.name).to eq('大阪 太郎')
|
384
|
+
expect(result.phrase).to eq('大阪 太郎')
|
385
|
+
expect(result.host).to eq('example.jp')
|
386
|
+
expect(result.user).to eq('osaka')
|
387
|
+
expect(result.original).to eq(line)
|
396
388
|
end
|
397
389
|
|
398
390
|
it "local part only(treated as invalid)" do
|
399
391
|
# if local part only, do not treat as an email address
|
400
392
|
line = "localpartonly"
|
401
|
-
|
402
|
-
expect(
|
403
|
-
expect(
|
404
|
-
expect(
|
405
|
-
expect(
|
406
|
-
expect(
|
407
|
-
expect(
|
408
|
-
expect(
|
393
|
+
result = MailAddress.parse_first(line)
|
394
|
+
expect(result.format).to eq('localpartonly')
|
395
|
+
expect(result.address).to be_nil
|
396
|
+
expect(result.name).to eq('localpartonly')
|
397
|
+
expect(result.phrase).to eq('localpartonly')
|
398
|
+
expect(result.host).to be_nil
|
399
|
+
expect(result.user).to eq('')
|
400
|
+
expect(result.original).to eq(line)
|
409
401
|
end
|
410
402
|
|
411
403
|
it "includes invalid addresses only among valid addresses " do
|
@@ -446,14 +438,14 @@ describe MailAddress do
|
|
446
438
|
]
|
447
439
|
|
448
440
|
array.each do |line|
|
449
|
-
|
450
|
-
expect(
|
451
|
-
expect(
|
452
|
-
expect(
|
453
|
-
expect(
|
454
|
-
expect(
|
455
|
-
expect(
|
456
|
-
expect(
|
441
|
+
result = MailAddress.parse_first(line)
|
442
|
+
expect(result.format).to eq(line.gsub(/[;,]/, ''))
|
443
|
+
expect(result.address).to be_nil
|
444
|
+
expect(result.name).to eq(line)
|
445
|
+
expect(result.phrase).to eq(line)
|
446
|
+
expect(result.host).to be_nil
|
447
|
+
expect(result.user).to eq('')
|
448
|
+
expect(result.original).to eq(line)
|
457
449
|
end
|
458
450
|
|
459
451
|
array = [
|
@@ -462,14 +454,14 @@ describe MailAddress do
|
|
462
454
|
]
|
463
455
|
|
464
456
|
array.each do |line|
|
465
|
-
|
466
|
-
expect(
|
467
|
-
expect(
|
468
|
-
expect(
|
469
|
-
expect(
|
470
|
-
expect(
|
471
|
-
expect(
|
472
|
-
expect(
|
457
|
+
result = MailAddress.parse_first(line)
|
458
|
+
expect(result.format).to eq(line.gsub(/[;,]/, ''))
|
459
|
+
expect(result.address).to be_nil
|
460
|
+
expect(result.name).to eq(line)
|
461
|
+
expect(result.phrase).to eq(line)
|
462
|
+
expect(result.host).to be_nil
|
463
|
+
expect(result.user).to eq('')
|
464
|
+
expect(result.original).to eq(line)
|
473
465
|
end
|
474
466
|
|
475
467
|
# a seemingly valid address
|
@@ -486,14 +478,14 @@ describe MailAddress do
|
|
486
478
|
|
487
479
|
it "specify mime-encoded address" do
|
488
480
|
line = "=?ISO-2022-JP?B?GyRCQmc6ZRsoQiAbJEJCQE86GyhC?= <osaka@example.jp>"
|
489
|
-
|
490
|
-
expect(
|
491
|
-
expect(
|
492
|
-
expect(
|
493
|
-
expect(
|
494
|
-
expect(
|
495
|
-
expect(
|
496
|
-
expect(
|
481
|
+
result = MailAddress.parse_first(line)
|
482
|
+
expect(result.format).to eq('=?ISO-2022-JP?B?GyRCQmc6ZRsoQiAbJEJCQE86GyhC?= <osaka@example.jp>')
|
483
|
+
expect(result.address).to eq('osaka@example.jp')
|
484
|
+
expect(result.name).to be_nil
|
485
|
+
expect(result.phrase).to eq('=?ISO-2022-JP?B?GyRCQmc6ZRsoQiAbJEJCQE86GyhC?=')
|
486
|
+
expect(result.host).to eq('example.jp')
|
487
|
+
expect(result.user).to eq('osaka')
|
488
|
+
expect(result.original).to eq(line)
|
497
489
|
end
|
498
490
|
|
499
491
|
it "obviously invalid address (has no '@')" do
|
@@ -506,15 +498,15 @@ describe MailAddress do
|
|
506
498
|
]
|
507
499
|
|
508
500
|
array.each do |line|
|
509
|
-
|
501
|
+
result = MailAddress.parse_first(line)
|
510
502
|
line.gsub!(';', '')
|
511
|
-
expect(
|
512
|
-
expect(
|
513
|
-
expect(
|
514
|
-
expect(
|
515
|
-
expect(
|
516
|
-
expect(
|
517
|
-
expect(
|
503
|
+
expect(result.format).to eq(line)
|
504
|
+
expect(result.address).to be_nil
|
505
|
+
expect(result.name).to eq(line.strip)
|
506
|
+
expect(result.phrase).to eq(line)
|
507
|
+
expect(result.host).to be_nil
|
508
|
+
expect(result.user).to eq('')
|
509
|
+
expect(result.original).to eq(line)
|
518
510
|
end
|
519
511
|
end
|
520
512
|
|
@@ -522,14 +514,14 @@ describe MailAddress do
|
|
522
514
|
array = [',', ';', ',;', ',,', ';;;', '<;,>, <>']
|
523
515
|
|
524
516
|
array.each do |line|
|
525
|
-
|
526
|
-
expect(
|
527
|
-
expect(
|
528
|
-
expect(
|
529
|
-
expect(
|
530
|
-
expect(
|
531
|
-
expect(
|
532
|
-
expect(
|
517
|
+
result = MailAddress.parse_first(line)
|
518
|
+
expect(result.format).to eq(line.gsub(/[;,]/, ''))
|
519
|
+
expect(result.address).to be_nil
|
520
|
+
expect(result.name).to eq(line.strip)
|
521
|
+
expect(result.phrase).to eq(line)
|
522
|
+
expect(result.host).to be_nil
|
523
|
+
expect(result.user).to eq('')
|
524
|
+
expect(result.original).to eq(line)
|
533
525
|
end
|
534
526
|
end
|
535
527
|
|
@@ -562,98 +554,98 @@ describe MailAddress do
|
|
562
554
|
it "empty string or nil" do
|
563
555
|
# empty string
|
564
556
|
line = ''
|
565
|
-
|
566
|
-
expect(
|
567
|
-
expect(
|
568
|
-
expect(
|
569
|
-
expect(
|
570
|
-
expect(
|
571
|
-
expect(
|
572
|
-
expect(
|
557
|
+
result = MailAddress.parse_first(line)
|
558
|
+
expect(result.format).to eq('')
|
559
|
+
expect(result.address).to be_nil
|
560
|
+
expect(result.name).to be_nil
|
561
|
+
expect(result.phrase).to eq('')
|
562
|
+
expect(result.host).to be_nil
|
563
|
+
expect(result.user).to eq('')
|
564
|
+
expect(result.original).to eq(line)
|
573
565
|
# nil
|
574
566
|
line = nil
|
575
|
-
|
576
|
-
expect(
|
577
|
-
expect(
|
578
|
-
expect(
|
579
|
-
expect(
|
580
|
-
expect(
|
581
|
-
expect(
|
582
|
-
expect(
|
567
|
+
result = MailAddress.parse_first(line)
|
568
|
+
expect(result.format).to eq('')
|
569
|
+
expect(result.address).to be_nil
|
570
|
+
expect(result.name).to be_nil
|
571
|
+
expect(result.phrase).to eq('')
|
572
|
+
expect(result.host).to be_nil
|
573
|
+
expect(result.user).to eq('')
|
574
|
+
expect(result.original).to eq('') # Note that it returns empty string NOT nil
|
583
575
|
end
|
584
576
|
|
585
577
|
it "includes backslash" do
|
586
578
|
line = '\"jjjjjjjjjjjj\" <john_doe@example.com>'
|
587
|
-
|
588
|
-
expect(
|
589
|
-
expect(
|
590
|
-
expect(
|
591
|
-
expect(
|
592
|
-
expect(
|
593
|
-
expect(
|
594
|
-
expect(
|
579
|
+
result = MailAddress.parse_first(line)
|
580
|
+
expect(result.format).to eq('jjjjjjjjjjjj <john_doe@example.com>')
|
581
|
+
expect(result.address).to eq('john_doe@example.com')
|
582
|
+
expect(result.name).to eq("jjjjjjjjjjjj")
|
583
|
+
expect(result.phrase).to eq('jjjjjjjjjjjj')
|
584
|
+
expect(result.host).to eq('example.com')
|
585
|
+
expect(result.user).to eq('john_doe')
|
586
|
+
expect(result.original).to eq('"jjjjjjjjjjjj" <john_doe@example.com>') # TO BE EXACT, NOT ORIGINAL.
|
595
587
|
|
596
588
|
line = '\"jjjjjjjjjjjj" <john_doe@example.com>'
|
597
|
-
|
598
|
-
expect(
|
599
|
-
expect(
|
600
|
-
expect(
|
601
|
-
expect(
|
602
|
-
expect(
|
603
|
-
expect(
|
604
|
-
expect(
|
589
|
+
result = MailAddress.parse_first(line)
|
590
|
+
expect(result.format).to eq('jjjjjjjjjjjj <john_doe@example.com>')
|
591
|
+
expect(result.address).to eq('john_doe@example.com')
|
592
|
+
expect(result.name).to eq("jjjjjjjjjjjj")
|
593
|
+
expect(result.phrase).to eq('jjjjjjjjjjjj')
|
594
|
+
expect(result.host).to eq('example.com')
|
595
|
+
expect(result.user).to eq('john_doe')
|
596
|
+
expect(result.original).to eq('"jjjjjjjjjjjj" <john_doe@example.com>') # TO BE EXACT, NOT ORIGINAL.
|
605
597
|
|
606
598
|
line = '"jjjjjjjjjjjj\" <john_doe@example.com>'
|
607
|
-
|
608
|
-
expect(
|
609
|
-
expect(
|
610
|
-
expect(
|
611
|
-
expect(
|
612
|
-
expect(
|
613
|
-
expect(
|
614
|
-
expect(
|
599
|
+
result = MailAddress.parse_first(line)
|
600
|
+
expect(result.format).to eq('jjjjjjjjjjjj <john_doe@example.com>')
|
601
|
+
expect(result.address).to eq('john_doe@example.com')
|
602
|
+
expect(result.name).to eq("jjjjjjjjjjjj")
|
603
|
+
expect(result.phrase).to eq('jjjjjjjjjjjj')
|
604
|
+
expect(result.host).to eq('example.com')
|
605
|
+
expect(result.user).to eq('john_doe')
|
606
|
+
expect(result.original).to eq('"jjjjjjjjjjjj" <john_doe@example.com>') # TO BE EXACT, NOT ORIGINAL.
|
615
607
|
end
|
616
608
|
|
617
609
|
it "suppress too much extraction" do
|
618
610
|
line = 'john_doe@example.com'
|
619
|
-
|
620
|
-
expect(
|
621
|
-
expect(
|
622
|
-
expect(
|
623
|
-
expect(
|
624
|
-
expect(
|
625
|
-
expect(
|
626
|
-
expect(
|
611
|
+
result = MailAddress.parse_first(line)
|
612
|
+
expect(result.format).to eq('john_doe@example.com')
|
613
|
+
expect(result.address).to eq('john_doe@example.com')
|
614
|
+
expect(result.name).to be_nil
|
615
|
+
expect(result.phrase).to eq('')
|
616
|
+
expect(result.host).to eq('example.com')
|
617
|
+
expect(result.user).to eq('john_doe')
|
618
|
+
expect(result.original).to eq(line)
|
627
619
|
|
628
620
|
line = 'john.doe@example.com'
|
629
|
-
|
630
|
-
expect(
|
631
|
-
expect(
|
632
|
-
expect(
|
633
|
-
expect(
|
634
|
-
expect(
|
635
|
-
expect(
|
636
|
-
expect(
|
621
|
+
result = MailAddress.parse_first(line)
|
622
|
+
expect(result.format).to eq('john.doe@example.com')
|
623
|
+
expect(result.address).to eq('john.doe@example.com')
|
624
|
+
expect(result.name).to be_nil
|
625
|
+
expect(result.phrase).to eq('')
|
626
|
+
expect(result.host).to eq('example.com')
|
627
|
+
expect(result.user).to eq('john.doe')
|
628
|
+
expect(result.original).to eq(line)
|
637
629
|
end
|
638
630
|
|
639
631
|
it "corrupted address" do
|
640
632
|
line = 'john <john@example.com' # lack of right angle bracket
|
641
|
-
|
642
|
-
expect(
|
643
|
-
expect(
|
644
|
-
expect(
|
645
|
-
expect(
|
646
|
-
expect(
|
647
|
-
expect(
|
648
|
-
expect(
|
633
|
+
result = MailAddress.parse_first(line)
|
634
|
+
expect(result.format).to eq('john <john@example.com')
|
635
|
+
expect(result.address).to be_nil
|
636
|
+
expect(result.name).to eq('john <john@example.com')
|
637
|
+
expect(result.phrase).to eq('john <john@example.com')
|
638
|
+
expect(result.host).to be_nil
|
639
|
+
expect(result.user).to eq('')
|
640
|
+
expect(result.original).to eq(line)
|
649
641
|
|
650
642
|
line = 'john <john@example.com> (last' # lack of right parenthesis
|
651
|
-
|
652
|
-
expect(
|
643
|
+
result = MailAddress.parse_first(line)
|
644
|
+
expect(result.original).to eq(line)
|
653
645
|
|
654
646
|
line = 'john <john@example.com> (ああ いい)' # right paren is a full-width char
|
655
|
-
|
656
|
-
expect(
|
647
|
+
result = MailAddress.parse_first(line)
|
648
|
+
expect(result.original).to eq(line)
|
657
649
|
|
658
650
|
line = 'john <john@example.com> (last, Mary <mary@example.com>' # lack of right parenthesis
|
659
651
|
results = MailAddress.parse(line)
|
@@ -663,15 +655,15 @@ describe MailAddress do
|
|
663
655
|
|
664
656
|
it "unbelievable but existed address" do
|
665
657
|
line = 'Sf 山田 太郎@example.com, valid@example.com'
|
666
|
-
|
667
|
-
expect(
|
668
|
-
expect(
|
669
|
-
expect(
|
670
|
-
expect(
|
671
|
-
expect(
|
672
|
-
expect(
|
673
|
-
expect(
|
674
|
-
expect(
|
658
|
+
result = MailAddress.parse_first(line)
|
659
|
+
expect(result.format).to eq('Sf 山田 太郎@example.com')
|
660
|
+
expect(result.address).not_to eq("Sf@example.com") ## important!
|
661
|
+
expect(result.address).to be_nil ## important!
|
662
|
+
expect(result.name).to eq('Sf 山田 太郎@example.com') ## I don't care whatever returns
|
663
|
+
expect(result.phrase).to eq('Sf 山田 太郎@example.com') ## I don't care whatever returns
|
664
|
+
expect(result.host).to be_nil
|
665
|
+
expect(result.user).to eq('')
|
666
|
+
expect(result.original).to eq('Sf 山田 太郎@example.com')
|
675
667
|
end
|
676
668
|
|
677
669
|
it 'Perl Module TAP test data' do
|
@@ -817,7 +809,7 @@ describe MailAddress do
|
|
817
809
|
exp_format = d[1]
|
818
810
|
exp_name = d[2]
|
819
811
|
# p "#{i} #{test_src}"
|
820
|
-
result = MailAddress.
|
812
|
+
result = MailAddress.parse_first(test_src)
|
821
813
|
|
822
814
|
result_format = result.format || ''
|
823
815
|
result_name = result.name || ''
|
data/spec/simple_parser_spec.rb
CHANGED
@@ -11,7 +11,7 @@ require 'pp'
|
|
11
11
|
describe MailAddress do
|
12
12
|
|
13
13
|
def assert_parsed_list(input, expected_list, opt_message = nil)
|
14
|
-
result = MailAddress.
|
14
|
+
result = MailAddress.g_parse input
|
15
15
|
expect(result.size).to eq(expected_list.size)
|
16
16
|
expected_list.each_with_index do |expected, index|
|
17
17
|
expect(result[index].address).to eq(expected)
|
data/spec/spec_helper.rb
CHANGED
@@ -2,14 +2,13 @@ require 'simplecov'
|
|
2
2
|
require 'coveralls'
|
3
3
|
Coveralls.wear!
|
4
4
|
|
5
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
|
6
6
|
SimpleCov::Formatter::HTMLFormatter,
|
7
7
|
Coveralls::SimpleCov::Formatter
|
8
|
-
]
|
8
|
+
])
|
9
9
|
SimpleCov.start do
|
10
10
|
add_filter '.bundle/'
|
11
11
|
end
|
12
12
|
|
13
13
|
require 'rubygems'
|
14
14
|
require 'mail_address'
|
15
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mail_address
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kizashi Nagata
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
version: '0'
|
118
118
|
requirements: []
|
119
119
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.5.
|
120
|
+
rubygems_version: 2.5.2
|
121
121
|
signing_key:
|
122
122
|
specification_version: 4
|
123
123
|
summary: Simple Mail Address Parser
|