mail_address 1.2.8 → 1.2.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f133e4048ada59c77c2146d1cd06d5f2c35e00f2
4
- data.tar.gz: 1057019e38ac5979ed952841dbca8e1e48984b62
3
+ metadata.gz: c273c57e022c03b757c099fd4245d7616aa4beb6
4
+ data.tar.gz: 0b8b1fd6b193b85790bbecb32965c1d37e2af8b2
5
5
  SHA512:
6
- metadata.gz: 1a2a0a5e0a064dee47fc7ad06b75c041016dd70cc7134c518b8e14a53eecef14c286fc1482757b98d39c0f0cb31313e56b3e4d02c6da43d981952c2c4e3ac21a
7
- data.tar.gz: e1676c7f33cbfab6448beaccaf0e53b54d24c3b2901cf16e0f71d0bd87adf02de38df339d31866ede01c3b3bfac91df701437400c85c37460ffa2987d4eba685
6
+ metadata.gz: ed4bd05095c5a316a09e3cb73bbf2b303e74e217d2eacec1b2dce0c34496a43b7834e02b8ae42b2e97a2ecf8f2e6c3dc0c20c6e7f940c5de3fc2485856feaaa2
7
+ data.tar.gz: 49da2ad5e84ace95734f3814e5f077523e2746f61d25b6f5f84b9c9f49ae10ed3893650bad9e4306fef45999b30b581dfb4c22e41a91aec1b37d8acf809c0bcd
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # MailAddress [![Build Status](https://travis-ci.org/kizashi1122/mail_address.svg)](https://travis-ci.org/kizashi1122/mail_address) [![Coverage Status](https://coveralls.io/repos/kizashi1122/mail_address/badge.png)](https://coveralls.io/r/kizashi1122/mail_address)
1
+ # MailAddress [![Build Status](https://travis-ci.org/kizashi1122/mail_address.svg)](https://travis-ci.org/kizashi1122/mail_address) [![Coverage Status](https://coveralls.io/repos/kizashi1122/mail_address/badge.png)](https://coveralls.io/r/kizashi1122/mail_address) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/kizashi1122/mail_address/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/kizashi1122/mail_address/?branch=master)
2
2
 
3
3
  MailAddress is a port of Mail::Address from Perl.
4
4
 
@@ -82,14 +82,14 @@ module MailAddress
82
82
  line = addresses.join(',') # $_
83
83
  words = []
84
84
 
85
+ line.gsub!(/\\/, '')
85
86
  line.sub!(/\A\s+/, '')
86
87
  line.gsub!(/[\r\n]+/,' ')
87
88
 
88
89
  while (line != '')
89
90
  tmp = nil
90
91
  if (
91
- line.match(/"[^"]+"/) && line.sub!(/\A("(?:[^"\\]+|\\.)*")(\s*)/, '') || # "..."
92
- # line.sub!(/\A(\[(?:[^\\]\]+|\\.)*\])(\s*)/, '') || # [...]
92
+ line.match(/"[^"]+"/) && line.sub!(/\A(\\?"(?:[^"\\]+|\\.)*")(\s*)/, '') || # "..."
93
93
  line.sub!(/\A([^\s()<>\@,;:\\".\[\]]+)(\s*)/, '') ||
94
94
  line.sub!(/\A([()<>\@,;:\\".\[\]])(\s*)/, '')
95
95
  )
@@ -124,7 +124,18 @@ module MailAddress
124
124
 
125
125
  def self._complete (phrase, address, original)
126
126
  phrase.length > 0 || address.length > 0 or return nil
127
- new_address = MailAddress::Address.new(phrase.join('').strip, address.join(''), original)
127
+
128
+ name = phrase.join('').strip
129
+
130
+ name = self.collapse_whitespace(name)
131
+ name = name[1 .. -2] if name.start_with?('\'') && name.end_with?('\'')
132
+ name = name[1 .. -2] if name.start_with?('"') && name.end_with?('"')
133
+
134
+ # Replace escaped quotes and slashes.
135
+ name = name.gsub(ESCAPED_DOUBLE_QUOTES_, '"')
136
+ name = name.gsub(ESCAPED_BACKSLASHES_, '\\')
137
+
138
+ new_address = MailAddress::Address.new(name, address.join(''), original)
128
139
  phrase.clear; address.clear
129
140
  new_address
130
141
  end
@@ -79,6 +79,8 @@ module MailAddress
79
79
 
80
80
  #address = goog.string.collapseWhitespace(address);
81
81
  address.strip!
82
+
83
+ addr = addr.strip
82
84
  MailAddress::Address.new(name, address, addr)
83
85
  end
84
86
 
@@ -1,3 +1,3 @@
1
1
  module MailAddress
2
- VERSION = "1.2.8"
2
+ VERSION = "1.2.9"
3
3
  end
File without changes
@@ -76,7 +76,7 @@ describe MailAddress do
76
76
  expect(results[0].format).to eq('"ジョン ドゥ" <johndoe@example.com>')
77
77
  expect(results[0].address).to eq('johndoe@example.com')
78
78
  expect(results[0].name).to eq('ジョン ドゥ')
79
- expect(results[0].phrase).to eq('"ジョン ドゥ"')
79
+ expect(results[0].phrase).to eq('ジョン ドゥ')
80
80
  expect(results[0].host).to eq('example.com')
81
81
  expect(results[0].user).to eq('johndoe')
82
82
  expect(results[0].original).to eq(line)
@@ -163,7 +163,7 @@ describe MailAddress do
163
163
  expect(results[0].format).to eq('"michael@example.jp" <johndoe@example.com>')
164
164
  expect(results[0].address).to eq('johndoe@example.com')
165
165
  expect(results[0].name).to eq('michael@example.jp')
166
- expect(results[0].phrase).to eq('"michael@example.jp"')
166
+ expect(results[0].phrase).to eq('michael@example.jp')
167
167
  expect(results[0].host).to eq('example.com')
168
168
  expect(results[0].user).to eq('johndoe')
169
169
  expect(results[0].original).to eq(line)
@@ -531,6 +531,38 @@ describe MailAddress do
531
531
  expect(results[0].original).to eq('') # Note that it returns empty string NOT nil
532
532
  end
533
533
 
534
+ it "includes backslash" do
535
+ line = '\"jjjjjjjjjjjj\" <john_doe@example.com>'
536
+ results = MailAddress.parse(line)
537
+ expect(results[0].format).to eq('jjjjjjjjjjjj <john_doe@example.com>')
538
+ expect(results[0].address).to eq('john_doe@example.com')
539
+ expect(results[0].name).to eq("jjjjjjjjjjjj")
540
+ expect(results[0].phrase).to eq('jjjjjjjjjjjj')
541
+ expect(results[0].host).to eq('example.com')
542
+ expect(results[0].user).to eq('john_doe')
543
+ expect(results[0].original).to eq('"jjjjjjjjjjjj" <john_doe@example.com>') # TO BE EXACT, NOT ORIGINAL.
544
+
545
+ line = '\"jjjjjjjjjjjj" <john_doe@example.com>'
546
+ results = MailAddress.parse(line)
547
+ expect(results[0].format).to eq('jjjjjjjjjjjj <john_doe@example.com>')
548
+ expect(results[0].address).to eq('john_doe@example.com')
549
+ expect(results[0].name).to eq("jjjjjjjjjjjj")
550
+ expect(results[0].phrase).to eq('jjjjjjjjjjjj')
551
+ expect(results[0].host).to eq('example.com')
552
+ expect(results[0].user).to eq('john_doe')
553
+ expect(results[0].original).to eq('"jjjjjjjjjjjj" <john_doe@example.com>') # TO BE EXACT, NOT ORIGINAL.
554
+
555
+ line = '"jjjjjjjjjjjj\" <john_doe@example.com>'
556
+ results = MailAddress.parse(line)
557
+ expect(results[0].format).to eq('jjjjjjjjjjjj <john_doe@example.com>')
558
+ expect(results[0].address).to eq('john_doe@example.com')
559
+ expect(results[0].name).to eq("jjjjjjjjjjjj")
560
+ expect(results[0].phrase).to eq('jjjjjjjjjjjj')
561
+ expect(results[0].host).to eq('example.com')
562
+ expect(results[0].user).to eq('john_doe')
563
+ expect(results[0].original).to eq('"jjjjjjjjjjjj" <john_doe@example.com>') # TO BE EXACT, NOT ORIGINAL.
564
+ end
565
+
534
566
  it "suppress too much extraction" do
535
567
  line = 'john_doe@example.com'
536
568
  results = MailAddress.parse(line)
@@ -63,17 +63,25 @@ describe MailAddress do
63
63
 
64
64
  it "testparseListWithCommaInLocalPart" do
65
65
  res = assert_parsed_list(
66
- '"Doe, John" <doe.john@gmail.com>, <someone@gmail.com>',
67
- ['doe.john@gmail.com', 'someone@gmail.com'])
68
- expect(res[0].phrase).to eq('Doe, John')
69
- expect(res[1].phrase).to eq('')
66
+ '"Doe, John" <doe.john@gmail.com>, <someone@gmail.com>, "あいうえお" <abc@example.com>, かき くけこ <xyz@example.com>',
67
+ ['doe.john@gmail.com', 'someone@gmail.com', 'abc@example.com', 'xyz@example.com'])
68
+ expect(res[0].name).to eq('Doe, John')
69
+ expect(res[1].name).to be_nil
70
+ expect(res[2].name).to eq('あいうえお')
71
+ expect(res[3].name).to eq('かき くけこ')
72
+ expect(res[2].format).to eq('"あいうえお" <abc@example.com>')
73
+ expect(res[2].original).to eq('"あいうえお" <abc@example.com>')
70
74
  end
71
75
 
72
76
  it "testparseListWithWhitespaceSeparatedEmails" do
73
77
  res = assert_parsed_list(
74
- 'a@b.com <c@d.com> e@f.com "G H" <g@h.com> i@j.com',
78
+ 'a@b.com abc <c@d.com> e@f.com "G H" <g@h.com> i@j.com',
75
79
  ['a@b.com', 'c@d.com', 'e@f.com', 'g@h.com', 'i@j.com']);
76
- expect(res[3].phrase).to eq('G H')
80
+ expect(res[3].name).to eq('G H')
81
+ expect(res[1].original).to eq('abc <c@d.com>')
82
+ expect(res[1].format).to eq('abc <c@d.com>')
83
+ expect(res[3].original).to eq('"G H" <g@h.com>')
84
+ expect(res[3].format).to eq('G H <g@h.com>')
77
85
  end
78
86
 
79
87
  it "testparseListSystemNewlines" do
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.8
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kizashi Nagata
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-23 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -93,6 +93,7 @@ files:
93
93
  - lib/mail_address/simple_parser.rb
94
94
  - lib/mail_address/version.rb
95
95
  - mail_address.gemspec
96
+ - spec/address_spec.rb
96
97
  - spec/mail_address_spec.rb
97
98
  - spec/simple_parser_spec.rb
98
99
  - spec/spec_helper.rb
@@ -121,6 +122,7 @@ signing_key:
121
122
  specification_version: 4
122
123
  summary: Simple Mail Address Parser
123
124
  test_files:
125
+ - spec/address_spec.rb
124
126
  - spec/mail_address_spec.rb
125
127
  - spec/simple_parser_spec.rb
126
128
  - spec/spec_helper.rb