mail_address 0.0.1 → 0.1.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 +4 -4
- data/.coveralls.yml +1 -0
- data/README.md +17 -4
- data/lib/mail_address/address.rb +5 -6
- data/lib/mail_address/version.rb +1 -1
- data/lib/mail_address.rb +1 -0
- data/mail_address.gemspec +2 -1
- data/spec/mail_address_spec.rb +62 -3
- data/spec/spec_helper.rb +4 -1
- metadata +18 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f5ef3594c8c1db655ecc152730b2ed9629f07aaf
|
|
4
|
+
data.tar.gz: 37e80811b0d7247e94af0590cb57a25cdfc7d149
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aa9949bdae33cf62b3d1230aa8e05195ea00c94ab65dae4aae3a02d6195f74af8d7c32249a0455b24644e4f0d8eba99bb7bafc1d68831942bc65dc91eb461099
|
|
7
|
+
data.tar.gz: 40a48078f26c3e9e410c4944a4a79f1385d68c8b8f314808dbd3753e967331df760255a5dcc7153bcc36bbadf7b7c5b7207ef9de6f730bff6a14dcddd6785e7c
|
data/.coveralls.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
service_name: travis-ci
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MailAddress [](https://travis-ci.org/kizashi1122/mail_address)
|
|
1
|
+
# MailAddress [](https://travis-ci.org/kizashi1122/mail_address) [](https://coveralls.io/r/kizashi1122/mail_address)
|
|
2
2
|
|
|
3
3
|
MailAddress is a simple email address parser.
|
|
4
4
|
This library is implemented based on Perl Module Mail::Address.
|
|
@@ -36,11 +36,24 @@ It's almost the same as Mail::Address(Perl).
|
|
|
36
36
|
```rb
|
|
37
37
|
require 'mail_address'
|
|
38
38
|
|
|
39
|
+
line = "John 'M' Doe <john@example.com> (this is a comment), 大阪 太郎 <osaka@example.jp>"
|
|
39
40
|
addrs = MailAddress.parse(line)
|
|
40
41
|
|
|
41
|
-
addrs.
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
p addrs[0].format # "John 'M' Doe <john@example.com> (this is a comment)"
|
|
43
|
+
p addrs[0].address # "john@example.com"
|
|
44
|
+
p addrs[0].name # "John 'M' Doe"
|
|
45
|
+
p addrs[0].comment # "(this is a comment)"
|
|
46
|
+
p addrs[0].phrase # "John 'M' Doe"
|
|
47
|
+
p addrs[0].host # "example.com"
|
|
48
|
+
p addrs[0].user # "john"
|
|
49
|
+
|
|
50
|
+
p addrs[1].format # "\"大阪 太郎\" <osaka@example.jp>"
|
|
51
|
+
p addrs[1].address # "osaka@example.jp"
|
|
52
|
+
p addrs[1].name # "大阪 太郎"
|
|
53
|
+
p addrs[1].comment # ""
|
|
54
|
+
p addrs[1].phrase # "大阪 太郎"
|
|
55
|
+
p addrs[1].host # "example.jp"
|
|
56
|
+
p addrs[1].user # "osaka"
|
|
44
57
|
```
|
|
45
58
|
|
|
46
59
|
## Contributing
|
data/lib/mail_address/address.rb
CHANGED
|
@@ -34,10 +34,10 @@ module MailAddress
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def name
|
|
37
|
-
phrase = @phrase
|
|
38
|
-
addr = @address
|
|
37
|
+
phrase = @phrase.dup
|
|
38
|
+
addr = @address.dup
|
|
39
39
|
|
|
40
|
-
phrase = @comment unless !phrase.nil? && phrase.length > 0
|
|
40
|
+
phrase = @comment.dup unless !phrase.nil? && phrase.length > 0
|
|
41
41
|
|
|
42
42
|
name = Address._extract_name(phrase)
|
|
43
43
|
|
|
@@ -60,14 +60,13 @@ module MailAddress
|
|
|
60
60
|
def host
|
|
61
61
|
addr = @address || '';
|
|
62
62
|
i = addr.rindex('@')
|
|
63
|
-
i
|
|
63
|
+
i.nil? ? nil : addr[i + 1 .. -1]
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
|
|
67
66
|
def user
|
|
68
67
|
addr = @address || '';
|
|
69
68
|
i = addr.rindex('@')
|
|
70
|
-
i
|
|
69
|
+
i.nil? ? addr : addr[0 ... i]
|
|
71
70
|
end
|
|
72
71
|
|
|
73
72
|
private
|
data/lib/mail_address/version.rb
CHANGED
data/lib/mail_address.rb
CHANGED
data/mail_address.gemspec
CHANGED
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
|
9
9
|
spec.authors = ["Kizashi Nagata"]
|
|
10
10
|
spec.email = ["kizashi1122@gmail.com"]
|
|
11
11
|
spec.summary = %q{Simple Mail Address Parser}
|
|
12
|
-
spec.description = %q{
|
|
12
|
+
spec.description = %q{A practical mail address parser implemented based on Perl Module Mail::Address.}
|
|
13
13
|
spec.homepage = "https://github.com/kizashi1122/mail_address"
|
|
14
14
|
spec.license = "MIT"
|
|
15
15
|
|
|
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
23
|
spec.add_development_dependency 'rspec', '~> 3.1', '>= 3.1.0'
|
|
24
|
+
spec.add_development_dependency "coveralls"
|
|
24
25
|
end
|
data/spec/mail_address_spec.rb
CHANGED
|
@@ -28,8 +28,67 @@ describe MailAddress do
|
|
|
28
28
|
expect(results[1].user).to eq("osaka")
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
it
|
|
31
|
+
it "unparsable with mail gem (includes '[')" do
|
|
32
|
+
line = "Ello [Do Not Reply] <do-not-reply@ello.co>"
|
|
33
|
+
results = MailAddress.parse(line)
|
|
34
|
+
expect(results[0].format).to eq("\"Ello [Do Not Reply]\" <do-not-reply@ello.co>")
|
|
35
|
+
expect(results[0].address).to eq("do-not-reply@ello.co")
|
|
36
|
+
expect(results[0].name).to eq("Ello")
|
|
37
|
+
expect(results[0].phrase).to eq("Ello [Do Not Reply]")
|
|
38
|
+
expect(results[0].comment).to eq("")
|
|
39
|
+
expect(results[0].host).to eq("ello.co")
|
|
40
|
+
expect(results[0].user).to eq("do-not-reply")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "unparsable with mail gem (no whitespace before <)" do
|
|
44
|
+
line = "大阪 太郎<osaka@example.jp>"
|
|
45
|
+
results = MailAddress.parse(line)
|
|
46
|
+
expect(results[0].format).to eq("\"大阪 太郎\" <osaka@example.jp>")
|
|
47
|
+
expect(results[0].address).to eq("osaka@example.jp")
|
|
48
|
+
expect(results[0].name).to eq("大阪 太郎")
|
|
49
|
+
expect(results[0].comment).to eq("")
|
|
50
|
+
expect(results[0].phrase).to eq("大阪 太郎")
|
|
51
|
+
expect(results[0].host).to eq("example.jp")
|
|
52
|
+
expect(results[0].user).to eq("osaka")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "unparsable with mail gem (???)" do
|
|
56
|
+
line = "大阪 太郎(ABC XYZ) <osaka@example.com>"
|
|
57
|
+
results = MailAddress.parse(line)
|
|
58
|
+
expect(results[0].format).to eq("\"大阪 太郎\" <osaka@example.com> (ABC XYZ)")
|
|
59
|
+
expect(results[0].address).to eq("osaka@example.com")
|
|
60
|
+
expect(results[0].name).to eq("大阪 太郎")
|
|
61
|
+
expect(results[0].comment).to eq("(ABC XYZ)")
|
|
62
|
+
expect(results[0].phrase).to eq("大阪 太郎")
|
|
63
|
+
expect(results[0].host).to eq("example.com")
|
|
64
|
+
expect(results[0].user).to eq("osaka")
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "unparsable with mail gem (???)" do
|
|
68
|
+
line = "大阪 太郎 <osaka@example.jp> (日本)"
|
|
69
|
+
results = MailAddress.parse(line)
|
|
70
|
+
expect(results[0].format).to eq("\"大阪 太郎\" <osaka@example.jp> (日本)")
|
|
71
|
+
expect(results[0].address).to eq("osaka@example.jp")
|
|
72
|
+
expect(results[0].name).to eq("大阪 太郎")
|
|
73
|
+
expect(results[0].comment).to eq("(日本)")
|
|
74
|
+
expect(results[0].phrase).to eq("大阪 太郎")
|
|
75
|
+
expect(results[0].host).to eq("example.jp")
|
|
76
|
+
expect(results[0].user).to eq("osaka")
|
|
77
|
+
end
|
|
32
78
|
|
|
79
|
+
it "no address" do
|
|
80
|
+
line = "localpartonly"
|
|
81
|
+
results = MailAddress.parse(line)
|
|
82
|
+
expect(results[0].format).to eq("localpartonly")
|
|
83
|
+
expect(results[0].address).to eq("localpartonly")
|
|
84
|
+
expect(results[0].name).to be_nil
|
|
85
|
+
expect(results[0].comment).to eq("")
|
|
86
|
+
expect(results[0].phrase).to eq("")
|
|
87
|
+
expect(results[0].host).to be_nil
|
|
88
|
+
expect(results[0].user).to eq("localpartonly")
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it 'Perl Module Pod test data' do
|
|
33
92
|
data = [
|
|
34
93
|
[ '"Joe & J. Harvey" <ddd @Org>, JJV @ BBN',
|
|
35
94
|
'"Joe & J. Harvey" <ddd@Org>',
|
|
@@ -165,11 +224,11 @@ describe MailAddress do
|
|
|
165
224
|
'Foo; Bar']
|
|
166
225
|
]
|
|
167
226
|
|
|
168
|
-
data.
|
|
227
|
+
data.each_with_index do |d, i|
|
|
169
228
|
test_src = d[0]
|
|
170
229
|
exp_format = d[1]
|
|
171
230
|
exp_name = d[2]
|
|
172
|
-
p test_src
|
|
231
|
+
p "#{i} #{test_src}"
|
|
173
232
|
result = MailAddress.parse(test_src)[0]
|
|
174
233
|
|
|
175
234
|
result_format = result.format || ""
|
data/spec/spec_helper.rb
CHANGED
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: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kizashi Nagata
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-01-
|
|
11
|
+
date: 2015-01-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -58,13 +58,28 @@ dependencies:
|
|
|
58
58
|
- - ">="
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
60
|
version: 3.1.0
|
|
61
|
-
|
|
61
|
+
- !ruby/object:Gem::Dependency
|
|
62
|
+
name: coveralls
|
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
type: :development
|
|
69
|
+
prerelease: false
|
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
description: A practical mail address parser implemented based on Perl Module Mail::Address.
|
|
62
76
|
email:
|
|
63
77
|
- kizashi1122@gmail.com
|
|
64
78
|
executables: []
|
|
65
79
|
extensions: []
|
|
66
80
|
extra_rdoc_files: []
|
|
67
81
|
files:
|
|
82
|
+
- ".coveralls.yml"
|
|
68
83
|
- ".gitignore"
|
|
69
84
|
- ".rspec"
|
|
70
85
|
- ".travis.yml"
|