email_reply_trimmer 0.1.8 → 0.1.13

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.
Files changed (35) hide show
  1. checksums.yaml +5 -5
  2. data/email_reply_trimmer.gemspec +1 -1
  3. data/lib/email_reply_trimmer.rb +59 -50
  4. data/lib/email_reply_trimmer/embedded_email_matcher.rb +5 -3
  5. data/lib/email_reply_trimmer/signature_matcher.rb +9 -2
  6. data/test/before/forwarded_apple.txt +1 -0
  7. data/test/before/forwarded_gmail.txt +1 -0
  8. data/test/elided/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
  9. data/test/elided/embedded_email_polish_2.txt +7 -0
  10. data/test/elided/embedded_email_ukrainian.txt +17 -0
  11. data/test/elided/forwarded_apple.txt +15 -0
  12. data/test/elided/forwarded_gmail.txt +15 -0
  13. data/test/elided/signatures.txt +3 -0
  14. data/test/elided/spam_1.txt +75 -0
  15. data/test/elided/spam_2.txt +152 -0
  16. data/test/emails/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
  17. data/test/emails/embedded_email_polish_2.txt +11 -0
  18. data/test/emails/embedded_email_ukrainian.txt +19 -0
  19. data/test/emails/forwarded_apple.txt +17 -0
  20. data/test/emails/forwarded_gmail.txt +17 -0
  21. data/test/emails/signatures.txt +3 -0
  22. data/test/emails/spam_1.txt +75 -0
  23. data/test/emails/spam_2.txt +174 -0
  24. data/test/embedded/forwarded_apple.txt +13 -0
  25. data/test/embedded/forwarded_gmail.txt +14 -0
  26. data/test/test_email_reply_trimmer.rb +5 -1
  27. data/test/trimmed/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
  28. data/test/trimmed/embedded_email_polish_2.txt +2 -0
  29. data/test/trimmed/embedded_email_ukrainian.txt +1 -0
  30. data/test/trimmed/forwarded_apple.txt +1 -0
  31. data/test/trimmed/forwarded_gmail.txt +1 -0
  32. data/test/trimmed/spam_1.txt +0 -0
  33. data/test/trimmed/spam_2.txt +21 -0
  34. metadata +30 -10
  35. data/Gemfile.lock +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 402d5791ea53b316a7ea2d7a972621060fbb632c
4
- data.tar.gz: c8c406d99a009bbf32b9ebef739cc46eaa361cfa
2
+ SHA256:
3
+ metadata.gz: c094ba472eabd06ed02276c4ec9e42cb32ccb873871e46e55c46cd4640425470
4
+ data.tar.gz: 968cee2c9b3de46ef86814dd84ee8449c400e9c5fa8d61363cbb90064204fadf
5
5
  SHA512:
6
- metadata.gz: 530b38bed9536b989a66146001f7514b54b5b905c6eedce1032d82267cc72f0072bac8483d5ac126d41848ce9963014a5330cfd89f9db4aea62138e7ab5bfc6c
7
- data.tar.gz: 721fd78143d81634eefa49a6df73b6565f1a5ea9fae598fc57e67509f988efb7b47de654ab4d16f3b5513799d80b686bd50a5721eb8b383630b1024173b02961
6
+ metadata.gz: 6c71cad161a2aaa27e813ff63f91b1e10359d73ffc95d0d01df0374dc8cc9a2ba506985cd4e33d12e63b3f41cd9e6f66bbe42293feea3f6e968c7d90e79a88de
7
+ data.tar.gz: e7e3661094d8b1183f572b7e847cac62a71215a341d12b627e0b2d5cfedfdad161f858b8aba3d97463d5ffda5919211da2b268dbd75e7edc48a95811d1e5b481
@@ -20,5 +20,5 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_development_dependency 'rake', '~> 12'
22
22
  s.add_development_dependency 'minitest', '~> 5'
23
- s.add_development_dependency 'rubocop', '~> 0'
23
+ s.add_development_dependency 'rubocop', '~> 0.52.1'
24
24
  end
@@ -6,7 +6,7 @@ require_relative "email_reply_trimmer/email_header_matcher"
6
6
  require_relative "email_reply_trimmer/quote_matcher"
7
7
 
8
8
  class EmailReplyTrimmer
9
- VERSION = "0.1.8"
9
+ VERSION = "0.1.13"
10
10
 
11
11
  DELIMITER = "d"
12
12
  EMBEDDED = "b"
@@ -54,7 +54,7 @@ class EmailReplyTrimmer
54
54
  end
55
55
 
56
56
  # when the reply is at the end of the email
57
- if pattern =~ /^(b[^t]+)*b[bqeh]+t[et]*$/
57
+ if is_reply_at_end?(pattern)
58
58
  index = pattern =~ /t[et]*$/
59
59
  pattern = ""
60
60
  lines = lines[index..-1]
@@ -78,8 +78,8 @@ class EmailReplyTrimmer
78
78
 
79
79
  # if there is some text before a huge quote ending the email,
80
80
  # then remove the quote
81
- if pattern =~ /te*[qbe]+$/
82
- index = pattern =~ /te*[qbe]+$/
81
+ if pattern =~ /t?e*[qbe]+$/
82
+ index = pattern =~ /t?e*[qbe]+$/
83
83
  pattern = pattern[0..index]
84
84
  lines = lines[0..index]
85
85
  end
@@ -144,6 +144,12 @@ class EmailReplyTrimmer
144
144
 
145
145
  if index = pattern =~ /(?:h[eqd]*?){3,}[tq]/
146
146
  embedded = lines[index..-1].join("\n").strip
147
+ elsif index = pattern =~ /b(?:[eqd]*){3,}[tq]/
148
+ # Exception for email clients (macOS / iOS) which embed fwd emails in quotes.
149
+ embedded = lines[index + 1..-1].map { |l| l.gsub(/^>\s*/, '') }.join("\n").strip
150
+ end
151
+
152
+ if index
147
153
  before = lines[0...(pattern[0...index] =~ /e*(b[eqd]*|b*[ed]*)$/)].join("\n").strip
148
154
  return [embedded, before]
149
155
  end
@@ -151,59 +157,62 @@ class EmailReplyTrimmer
151
157
 
152
158
  private
153
159
 
154
- def self.preprocess!(text)
155
- # normalize line endings
156
- text.gsub!("\r\n", "\n")
157
-
158
- # remove PGP markers
159
- text.gsub!(/\A-----BEGIN PGP SIGNED MESSAGE-----\n(?:Hash: \w+)?\s+/i, "")
160
- text.gsub!(/^-----BEGIN PGP SIGNATURE-----$[\s\S]+^-----END PGP SIGNATURE-----/, "")
161
-
162
- # remove unsubscribe links
163
- text.gsub!(/^Unsubscribe: .+@.+(\n.+http:.+)?\s*\z/i, "")
164
-
165
- # remove alias-style quotes marker
166
- text.gsub!(/^.*>{5} "[^"\n]+" == .+ writes:/, "")
167
-
168
- # change enclosed-style quotes format
169
- text.gsub!(/^>>> ?(.+) ?>>>$\n([\s\S]+?)\n^<<< ?\1 ?<<<$/) { $2.gsub(/^/, "> ") }
170
- text.gsub!(/^>{4,}[[:blank:]]*$\n([\s\S]+?)\n^<{4,}[[:blank:]]*$/) { $1.gsub(/^/, "> ") }
171
-
172
- # fix all quotes formats
173
- text.gsub!(/^((?:[[:blank:]]*[[:alpha:]]*[>|])+)/) { $1.gsub(/([[:alpha:]]+>|\|)/, ">") }
174
-
175
- # fix embedded email markers that might span over multiple lines
176
- (
177
- EmbeddedEmailMatcher::ON_DATE_SOMEONE_WROTE_REGEXES +
178
- EmbeddedEmailMatcher::SOMEONE_WROTE_ON_DATE_REGEXES +
179
- EmbeddedEmailMatcher::DATE_SOMEONE_WROTE_REGEXES +
180
- [EmbeddedEmailMatcher::DATE_SOMEONE_EMAIL_REGEX]
181
- ).each do |r|
182
- text.gsub!(r) do |m|
183
- m.count("\n") > 4 ? m : m.gsub(/\n+[[:space:]]*/, " ")
184
- end
185
- end
160
+ def self.preprocess!(text)
161
+ # normalize line endings
162
+ text.gsub!("\r\n", "\n")
163
+
164
+ # remove PGP markers
165
+ text.gsub!(/\A-----BEGIN PGP SIGNED MESSAGE-----\n(?:Hash: \w+)?\s+/i, "")
166
+ text.gsub!(/^-----BEGIN PGP SIGNATURE-----$[\s\S]+^-----END PGP SIGNATURE-----/, "")
167
+
168
+ # remove unsubscribe links
169
+ text.gsub!(/^Unsubscribe: .+@.+(\n.+http:.+)?\s*\z/i, "")
170
+
171
+ # remove alias-style quotes marker
172
+ text.gsub!(/^.*>{5} "[^"\n]+" == .+ writes:/, "")
173
+
174
+ # change enclosed-style quotes format
175
+ text.gsub!(/^>>> ?(.+) ?>>>$\n([\s\S]+?)\n^<<< ?\1 ?<<<$/) { $2.gsub(/^/, "> ") }
176
+ text.gsub!(/^>{4,}[[:blank:]]*$\n([\s\S]+?)\n^<{4,}[[:blank:]]*$/) { $1.gsub(/^/, "> ") }
177
+
178
+ # fix all quotes formats
179
+ text.gsub!(/^((?:[[:blank:]]*[[:alpha:]]*[>|])+)/) { $1.gsub(/([[:alpha:]]+>|\|)/, ">") }
186
180
 
187
- # remove leading/trailing whitespaces
188
- text.strip!
181
+ # fix embedded email markers that might span over multiple lines
182
+ (
183
+ EmbeddedEmailMatcher::ON_DATE_SOMEONE_WROTE_REGEXES +
184
+ EmbeddedEmailMatcher::SOMEONE_WROTE_ON_DATE_REGEXES +
185
+ EmbeddedEmailMatcher::DATE_SOMEONE_WROTE_REGEXES +
186
+ [EmbeddedEmailMatcher::DATE_SOMEONE_EMAIL_REGEX]
187
+ ).each do |r|
188
+ text.gsub!(r) do |m|
189
+ m.count("\n") > 4 ? m : m.gsub(/\n+[[:space:]]*/, " ")
190
+ end
189
191
  end
190
192
 
191
- def self.compute_elided(text, lines)
192
- elided = []
193
+ # remove leading/trailing whitespaces
194
+ text.strip!
195
+ end
196
+
197
+ def self.compute_elided(text, lines)
198
+ elided = []
193
199
 
194
- t = 0
195
- l = 0
200
+ t = 0
201
+ l = 0
196
202
 
197
- while t < text.size
198
- while l < lines.size && text[t] == lines[l]
199
- t += 1
200
- l += 1
201
- end
202
- elided << text[t]
203
+ while t < text.size
204
+ while l < lines.size && text[t] == lines[l]
203
205
  t += 1
206
+ l += 1
204
207
  end
205
-
206
- elided.join("\n").strip
208
+ elided << text[t]
209
+ t += 1
207
210
  end
208
211
 
212
+ elided.join("\n").strip
213
+ end
214
+
215
+ def self.is_reply_at_end?(pattern)
216
+ pattern =~ /^b[^t]+t[et]*$/
217
+ end
209
218
  end
@@ -54,6 +54,8 @@ class EmbeddedEmailMatcher
54
54
  end
55
55
 
56
56
  # суббота, 14 марта 2015 г. пользователь etewiah написал:
57
+ # 23 mar 2017 21:25 "Neil Lalonde" <meta@discoursemail.com> napisał(a):
58
+ # 30 серп. 2016 р. 20:45 "Arpit" no-reply@example.com пише:
57
59
  DATE_SOMEONE_WROTE_MARKERS = [
58
60
  # Russian
59
61
  ["пользователь", "написал"],
@@ -65,8 +67,8 @@ class EmbeddedEmailMatcher
65
67
 
66
68
  DATE_SOMEONE_WROTE_REGEXES = DATE_SOMEONE_WROTE_MARKERS.map do |user, wrote|
67
69
  user.size == 0 ?
68
- /^.*\d{4}.*?(?:(?!#{wrote})[\s\S])*#{wrote}:/ :
69
- /^.*\d{4}.*?#{user}.*?(?:(?!#{wrote})[\s\S])*#{wrote}:/
70
+ /\d{4}.{1,80}\n?.{0,80}?#{wrote}:/ :
71
+ /\d{4}.{1,80}#{user}.{0,80}\n?.{0,80}?#{wrote}:/
70
72
  end
71
73
 
72
74
  # Max Mustermann <try_discourse@discoursemail.com> schrieb am Fr., 28. Apr. 2017 um 11:53 Uhr:
@@ -84,7 +86,7 @@ class EmbeddedEmailMatcher
84
86
  # 2013/10/2 camilohollanda <info@discourse.org>
85
87
  # вт, 5 янв. 2016 г. в 23:39, Erlend Sogge Heggen <info@discourse.org>:
86
88
  # ср, 1 апр. 2015, 18:29, Denis Didkovsky <info@discourse.org>:
87
- DATE_SOMEONE_EMAIL_REGEX = /^.*\d{4}.+\s?<[^@<>]+@[^@<>.]+\.[^@<>]+>:?$/
89
+ DATE_SOMEONE_EMAIL_REGEX = /\d{4}.{1,80}\s?<[^@<>]+@[^@<>.]+\.[^@<>]+>:?$/
88
90
 
89
91
  # codinghorror via Discourse Meta wrote:
90
92
  # codinghorror via Discourse Meta <info@discourse.org> schrieb:
@@ -20,7 +20,7 @@ class SignatureMatcher
20
20
  /^[[:blank:]]*[[:word:]]+ from mobile/i,
21
21
  /^[[:blank:]]*[\(<]*Sent (from|via|with|by) .+[\)>]*/i,
22
22
  /^[[:blank:]]*From my .{1,20}/i,
23
- /^[[:blank:]]*Get Outlook for iOS/i,
23
+ /^[[:blank:]]*Get Outlook for /i,
24
24
  # French
25
25
  /^[[:blank:]]*Envoyé depuis (mon|Yahoo Mail)/i,
26
26
  # German
@@ -34,10 +34,17 @@ class SignatureMatcher
34
34
  /^[[:blank:]]*Enviado do meu /i,
35
35
  # Spanish
36
36
  /^[[:blank:]]*Enviado desde mi /i,
37
+ # Dutch
38
+ /^[[:blank:]]*Verzonden met /i,
39
+ /^[[:blank:]]*Verstuurd vanaf mijn /i,
40
+ # Swedish
41
+ /^[[:blank:]]*från min /i,
37
42
  ]
38
43
 
39
44
  def self.match?(line)
40
- SIGNATURE_REGEXES.any? { |r| line =~ r }
45
+ # remove any markdown links
46
+ stripped = line.gsub(/\[([^\]]+)\]\([^\)]+\)/) { $1 }
47
+ SIGNATURE_REGEXES.any? { |r| stripped =~ r }
41
48
  end
42
49
 
43
50
  end
@@ -0,0 +1 @@
1
+ This email has been forwarded from Apple Mail.
@@ -0,0 +1 @@
1
+ This email has been forwarded from Gmail.
@@ -0,0 +1,7 @@
1
+ 23 mar 2017 21:25 "Neil Lalonde" <meta@discoursemail.com> napisał(a):
2
+
3
+ > neil <https://meta.discourse.org/users/neil> Neil Lalonde
4
+ > <https://meta.discourse.org/users/neil> Team
5
+ > March 23
6
+ >
7
+ > I have made required changes. Enjoy!
@@ -0,0 +1,17 @@
1
+ 30 серп. 2016 р. 20:45 "Arpit" <no-reply@example.com> пише:
2
+
3
+ > meg <http://forum.example.com/users/foo> Foo
4
+ > <http://forum.example.com/users/foo>
5
+ > Август 30
6
+ >
7
+ > Когда будет точное название, напишите в личку и мы поменяем название.
8
+ > ------------------------------
9
+ >
10
+ > Visit Message
11
+ > <http://forum.example.com/t/slug/24>
12
+ > or reply to this email to respond.
13
+ >
14
+ > To unsubscribe from these emails, click here
15
+ > <http://forum.example.com/email/unsubscribe/0123456789>
16
+ > .
17
+ >
@@ -0,0 +1,15 @@
1
+ > Begin forwarded message:
2
+ >
3
+ > From: Foo Discourse <foo@discourse.org>
4
+ > Subject: This email is going to be forwarded
5
+ > Date: 01 January 2019 at 12:00:00 EET
6
+ > To: bar@discourse.org
7
+ >
8
+ > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
9
+ > lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
10
+ > amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
11
+ > sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
12
+ > dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
13
+ > risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
14
+ > turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
15
+ > id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -0,0 +1,15 @@
1
+ ---------- Forwarded message ---------
2
+ From: Foo Discourse <foo@discourse.org>
3
+ Date: Tue, Jan 01, 2019 at 12:00 PM
4
+ Subject: This email is going to be forwarded
5
+ To: <bar@discourse.org>
6
+
7
+
8
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
9
+ lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
10
+ amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
11
+ sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
12
+ dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
13
+ risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
14
+ turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
15
+ id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -24,5 +24,8 @@ Sent from my Windows 8 PC
24
24
  (sent from a phone)
25
25
  (Sent from mobile device)
26
26
  從我的 iPhone 傳送
27
+ Sent from [mail](https://go.microsoft.com/fwlink/?LinkId=550986) for windows 10
28
+ Verzonden met BlackBerry Work
27
29
 
28
30
  Get Outlook for iOShttps://aka.ms/o0ukef
31
+ Get [Outlook for Android](https://aka.ms/ghei36)
@@ -0,0 +1,75 @@
1
+ > On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
2
+ >
3
+ >> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
4
+ >>
5
+ >>> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
6
+ >>>
7
+ >>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
8
+ >>>>
9
+ >>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
10
+ >>>>>
11
+ >>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
12
+ >>>>>>
13
+ >>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
14
+ >>>>>>>
15
+ >>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
16
+ >>>>>>>>
17
+ >>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
18
+ >>>>>>>>>
19
+ >>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
20
+ >>>>>>>>>>
21
+ >>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
22
+ >>>>>>>>>>>
23
+ >>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
24
+ >>>>>>>>>>>>
25
+ >>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
26
+ >>>>>>>>>>>>>
27
+ >>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
28
+ >>>>>>>>>>>>>>
29
+ >>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
30
+ >>>>>>>>>>>>>>>
31
+ >>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
32
+ >>>>>>>>>>>>>>>>
33
+ >>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
34
+ >>>>>>>>>>>>>>>>>
35
+ >>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
36
+ >>>>>>>>>>>>>>>>>>
37
+ >>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
38
+ >>>>>>>>>>>>>>>>>>>
39
+ >>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
40
+ >>>>>>>>>>>>>>>>>>>>
41
+ >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
42
+ >>>>>>>>>>>>>>>>>>>>>
43
+ >>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
44
+ >>>>>>>>>>>>>>>>>>>>>>
45
+ >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
46
+ >>>>>>>>>>>>>>>>>>>>>>>
47
+ >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
48
+ >>>>>>>>>>>>>>>>>>>>>>>>
49
+ >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
50
+ >>>>>>>>>>>>>>>>>>>>>>>>>
51
+ >>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
52
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
53
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
54
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
55
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
56
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
57
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
58
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
60
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
61
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
62
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
63
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
64
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
65
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
66
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
67
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
68
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
69
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
70
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
71
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
72
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
73
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
74
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
75
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
@@ -0,0 +1,152 @@
1
+ > On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
2
+ >
3
+ >> Hello world!
4
+ >>
5
+ >> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
6
+ >>
7
+ >>> Hello world!
8
+ >>>
9
+ >>> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
10
+ >>>
11
+ >>>> Hello world!
12
+ >>>>
13
+ >>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
14
+ >>>>
15
+ >>>>> Hello world!
16
+ >>>>>
17
+ >>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
18
+ >>>>>
19
+ >>>>>> Hello world!
20
+ >>>>>>
21
+ >>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
22
+ >>>>>>
23
+ >>>>>>> Hello world!
24
+ >>>>>>>
25
+ >>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
26
+ >>>>>>>
27
+ >>>>>>>> Hello world!
28
+ >>>>>>>>
29
+ >>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
30
+ >>>>>>>>
31
+ >>>>>>>>> Hello world!
32
+ >>>>>>>>>
33
+ >>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
34
+ >>>>>>>>>
35
+ >>>>>>>>>> Hello world!
36
+ >>>>>>>>>>
37
+ >>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
38
+ >>>>>>>>>>
39
+ >>>>>>>>>>> Hello world!
40
+ >>>>>>>>>>>
41
+ >>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
42
+ >>>>>>>>>>>
43
+ >>>>>>>>>>>> Hello world!
44
+ >>>>>>>>>>>>
45
+ >>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
46
+ >>>>>>>>>>>>
47
+ >>>>>>>>>>>>> Hello world!
48
+ >>>>>>>>>>>>>
49
+ >>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
50
+ >>>>>>>>>>>>>
51
+ >>>>>>>>>>>>>> Hello world!
52
+ >>>>>>>>>>>>>>
53
+ >>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
54
+ >>>>>>>>>>>>>>
55
+ >>>>>>>>>>>>>>> Hello world!
56
+ >>>>>>>>>>>>>>>
57
+ >>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
58
+ >>>>>>>>>>>>>>>
59
+ >>>>>>>>>>>>>>>> Hello world!
60
+ >>>>>>>>>>>>>>>>
61
+ >>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
62
+ >>>>>>>>>>>>>>>>
63
+ >>>>>>>>>>>>>>>>> Hello world!
64
+ >>>>>>>>>>>>>>>>>
65
+ >>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
66
+ >>>>>>>>>>>>>>>>>
67
+ >>>>>>>>>>>>>>>>>> Hello world!
68
+ >>>>>>>>>>>>>>>>>>
69
+ >>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
70
+ >>>>>>>>>>>>>>>>>>
71
+ >>>>>>>>>>>>>>>>>>> Hello world!
72
+ >>>>>>>>>>>>>>>>>>>
73
+ >>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
74
+ >>>>>>>>>>>>>>>>>>>
75
+ >>>>>>>>>>>>>>>>>>>> Hello world!
76
+ >>>>>>>>>>>>>>>>>>>>
77
+ >>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
78
+ >>>>>>>>>>>>>>>>>>>>
79
+ >>>>>>>>>>>>>>>>>>>>> Hello world!
80
+ >>>>>>>>>>>>>>>>>>>>>
81
+ >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
82
+ >>>>>>>>>>>>>>>>>>>>>
83
+ >>>>>>>>>>>>>>>>>>>>>> Hello world!
84
+ >>>>>>>>>>>>>>>>>>>>>>
85
+ >>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
86
+ >>>>>>>>>>>>>>>>>>>>>>
87
+ >>>>>>>>>>>>>>>>>>>>>>> Hello world!
88
+ >>>>>>>>>>>>>>>>>>>>>>>
89
+ >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
90
+ >>>>>>>>>>>>>>>>>>>>>>>
91
+ >>>>>>>>>>>>>>>>>>>>>>>> Hello world!
92
+ >>>>>>>>>>>>>>>>>>>>>>>>
93
+ >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
94
+ >>>>>>>>>>>>>>>>>>>>>>>>
95
+ >>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
96
+ >>>>>>>>>>>>>>>>>>>>>>>>>
97
+ >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
98
+ >>>>>>>>>>>>>>>>>>>>>>>>>
99
+ >>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
100
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
101
+ >>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
102
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
103
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
104
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
105
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
106
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
107
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
108
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
109
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
110
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
111
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
112
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
113
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
114
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
115
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
116
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
117
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
118
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
119
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
120
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
121
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
122
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
123
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
124
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
125
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
126
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
127
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
128
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
129
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
130
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
131
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
132
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
133
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
134
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
135
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
136
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
137
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
138
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
139
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
140
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
141
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
142
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
143
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
144
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
145
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
146
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
147
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
148
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
149
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
150
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
151
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
152
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -0,0 +1,11 @@
1
+ Hi Neil,
2
+ Thanks for prompt response!
3
+
4
+
5
+ 23 mar 2017 21:25 "Neil Lalonde" <meta@discoursemail.com> napisał(a):
6
+
7
+ > neil <https://meta.discourse.org/users/neil> Neil Lalonde
8
+ > <https://meta.discourse.org/users/neil> Team
9
+ > March 23
10
+ >
11
+ > I have made required changes. Enjoy!
@@ -0,0 +1,19 @@
1
+ Спасибо еще раз.
2
+
3
+ 30 серп. 2016 р. 20:45 "Arpit" <no-reply@example.com> пише:
4
+
5
+ > meg <http://forum.example.com/users/foo> Foo
6
+ > <http://forum.example.com/users/foo>
7
+ > Август 30
8
+ >
9
+ > Когда будет точное название, напишите в личку и мы поменяем название.
10
+ > ------------------------------
11
+ >
12
+ > Visit Message
13
+ > <http://forum.example.com/t/slug/24>
14
+ > or reply to this email to respond.
15
+ >
16
+ > To unsubscribe from these emails, click here
17
+ > <http://forum.example.com/email/unsubscribe/0123456789>
18
+ > .
19
+ >
@@ -0,0 +1,17 @@
1
+ This email has been forwarded from Apple Mail.
2
+
3
+ > Begin forwarded message:
4
+ >
5
+ > From: Foo Discourse <foo@discourse.org>
6
+ > Subject: This email is going to be forwarded
7
+ > Date: 01 January 2019 at 12:00:00 EET
8
+ > To: bar@discourse.org
9
+ >
10
+ > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
11
+ > lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
12
+ > amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
13
+ > sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
14
+ > dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
15
+ > risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
16
+ > turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
17
+ > id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -0,0 +1,17 @@
1
+ This email has been forwarded from Gmail.
2
+
3
+ ---------- Forwarded message ---------
4
+ From: Foo Discourse <foo@discourse.org>
5
+ Date: Tue, Jan 01, 2019 at 12:00 PM
6
+ Subject: This email is going to be forwarded
7
+ To: <bar@discourse.org>
8
+
9
+
10
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
11
+ lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
12
+ amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
13
+ sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
14
+ dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
15
+ risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
16
+ turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
17
+ id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -26,5 +26,8 @@ Sent from my Windows 8 PC
26
26
  (sent from a phone)
27
27
  (Sent from mobile device)
28
28
  從我的 iPhone 傳送
29
+ Sent from [mail](https://go.microsoft.com/fwlink/?LinkId=550986) for windows 10
30
+ Verzonden met BlackBerry Work
29
31
 
30
32
  Get Outlook for iOShttps://aka.ms/o0ukef
33
+ Get [Outlook for Android](https://aka.ms/ghei36)
@@ -0,0 +1,75 @@
1
+ > On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
2
+ >
3
+ >> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
4
+ >>
5
+ >>> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
6
+ >>>
7
+ >>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
8
+ >>>>
9
+ >>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
10
+ >>>>>
11
+ >>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
12
+ >>>>>>
13
+ >>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
14
+ >>>>>>>
15
+ >>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
16
+ >>>>>>>>
17
+ >>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
18
+ >>>>>>>>>
19
+ >>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
20
+ >>>>>>>>>>
21
+ >>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
22
+ >>>>>>>>>>>
23
+ >>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
24
+ >>>>>>>>>>>>
25
+ >>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
26
+ >>>>>>>>>>>>>
27
+ >>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
28
+ >>>>>>>>>>>>>>
29
+ >>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
30
+ >>>>>>>>>>>>>>>
31
+ >>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
32
+ >>>>>>>>>>>>>>>>
33
+ >>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
34
+ >>>>>>>>>>>>>>>>>
35
+ >>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
36
+ >>>>>>>>>>>>>>>>>>
37
+ >>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
38
+ >>>>>>>>>>>>>>>>>>>
39
+ >>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
40
+ >>>>>>>>>>>>>>>>>>>>
41
+ >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
42
+ >>>>>>>>>>>>>>>>>>>>>
43
+ >>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
44
+ >>>>>>>>>>>>>>>>>>>>>>
45
+ >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
46
+ >>>>>>>>>>>>>>>>>>>>>>>
47
+ >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
48
+ >>>>>>>>>>>>>>>>>>>>>>>>
49
+ >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
50
+ >>>>>>>>>>>>>>>>>>>>>>>>>
51
+ >>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
52
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
53
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
54
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
55
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
56
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
57
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
58
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
60
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
61
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
62
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
63
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
64
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
65
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
66
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
67
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
68
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
69
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
70
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
71
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
72
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
73
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
74
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
75
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
@@ -0,0 +1,174 @@
1
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet dictum
2
+ lectus, at efficitur neque. Class aptent taciti sociosqu ad litora torquent per
3
+ conubia nostra, per inceptos himenaeos. Aenean dictum pulvinar tortor non
4
+ ultricies. Maecenas cursus lobortis dolor quis feugiat. Integer efficitur,
5
+ mauris sit amet lobortis consectetur, urna augue feugiat mi, et tempor dui
6
+ sapien vehicula dolor. Aenean sit amet ultrices tortor. Praesent vel porttitor
7
+ risus, eu fringilla nibh. Phasellus sollicitudin elit id tortor dapibus, at
8
+ euismod odio sodales. Ut est ex, pharetra malesuada dui maximus, ullamcorper
9
+ fringilla turpis. Nullam gravida, elit blandit commodo blandit, velit sem
10
+ ornare odio, eu ultricies arcu ex sit amet libero. Vestibulum eu fringilla
11
+ ante, nec blandit nunc.
12
+
13
+ Nullam nec viverra ipsum. Nullam semper eu urna id facilisis. Nam blandit
14
+ dictum eros, sit amet auctor dui fermentum a. Quisque finibus magna nisi, ac
15
+ hendrerit purus lacinia ut. Donec maximus, enim id tincidunt vulputate, libero
16
+ ex tempor elit, vitae sagittis libero leo sed leo. Quisque non gravida ex,
17
+ efficitur interdum neque. Interdum et malesuada fames ac ante ipsum primis in
18
+ faucibus. Phasellus rhoncus nisi vitae turpis bibendum luctus. Duis placerat
19
+ aliquam lectus, pellentesque commodo dolor hendrerit quis. Suspendisse ipsum
20
+ sapien, interdum ac felis ac, mattis varius neque. Maecenas nec risus sit amet
21
+ ex aliquam vestibulum. Maecenas a turpis et turpis volutpat congue.
22
+
23
+ > On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
24
+ >
25
+ >> Hello world!
26
+ >>
27
+ >> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
28
+ >>
29
+ >>> Hello world!
30
+ >>>
31
+ >>> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
32
+ >>>
33
+ >>>> Hello world!
34
+ >>>>
35
+ >>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
36
+ >>>>
37
+ >>>>> Hello world!
38
+ >>>>>
39
+ >>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
40
+ >>>>>
41
+ >>>>>> Hello world!
42
+ >>>>>>
43
+ >>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
44
+ >>>>>>
45
+ >>>>>>> Hello world!
46
+ >>>>>>>
47
+ >>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
48
+ >>>>>>>
49
+ >>>>>>>> Hello world!
50
+ >>>>>>>>
51
+ >>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
52
+ >>>>>>>>
53
+ >>>>>>>>> Hello world!
54
+ >>>>>>>>>
55
+ >>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
56
+ >>>>>>>>>
57
+ >>>>>>>>>> Hello world!
58
+ >>>>>>>>>>
59
+ >>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
60
+ >>>>>>>>>>
61
+ >>>>>>>>>>> Hello world!
62
+ >>>>>>>>>>>
63
+ >>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
64
+ >>>>>>>>>>>
65
+ >>>>>>>>>>>> Hello world!
66
+ >>>>>>>>>>>>
67
+ >>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
68
+ >>>>>>>>>>>>
69
+ >>>>>>>>>>>>> Hello world!
70
+ >>>>>>>>>>>>>
71
+ >>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
72
+ >>>>>>>>>>>>>
73
+ >>>>>>>>>>>>>> Hello world!
74
+ >>>>>>>>>>>>>>
75
+ >>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
76
+ >>>>>>>>>>>>>>
77
+ >>>>>>>>>>>>>>> Hello world!
78
+ >>>>>>>>>>>>>>>
79
+ >>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
80
+ >>>>>>>>>>>>>>>
81
+ >>>>>>>>>>>>>>>> Hello world!
82
+ >>>>>>>>>>>>>>>>
83
+ >>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
84
+ >>>>>>>>>>>>>>>>
85
+ >>>>>>>>>>>>>>>>> Hello world!
86
+ >>>>>>>>>>>>>>>>>
87
+ >>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
88
+ >>>>>>>>>>>>>>>>>
89
+ >>>>>>>>>>>>>>>>>> Hello world!
90
+ >>>>>>>>>>>>>>>>>>
91
+ >>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
92
+ >>>>>>>>>>>>>>>>>>
93
+ >>>>>>>>>>>>>>>>>>> Hello world!
94
+ >>>>>>>>>>>>>>>>>>>
95
+ >>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
96
+ >>>>>>>>>>>>>>>>>>>
97
+ >>>>>>>>>>>>>>>>>>>> Hello world!
98
+ >>>>>>>>>>>>>>>>>>>>
99
+ >>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
100
+ >>>>>>>>>>>>>>>>>>>>
101
+ >>>>>>>>>>>>>>>>>>>>> Hello world!
102
+ >>>>>>>>>>>>>>>>>>>>>
103
+ >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
104
+ >>>>>>>>>>>>>>>>>>>>>
105
+ >>>>>>>>>>>>>>>>>>>>>> Hello world!
106
+ >>>>>>>>>>>>>>>>>>>>>>
107
+ >>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
108
+ >>>>>>>>>>>>>>>>>>>>>>
109
+ >>>>>>>>>>>>>>>>>>>>>>> Hello world!
110
+ >>>>>>>>>>>>>>>>>>>>>>>
111
+ >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
112
+ >>>>>>>>>>>>>>>>>>>>>>>
113
+ >>>>>>>>>>>>>>>>>>>>>>>> Hello world!
114
+ >>>>>>>>>>>>>>>>>>>>>>>>
115
+ >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
116
+ >>>>>>>>>>>>>>>>>>>>>>>>
117
+ >>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
118
+ >>>>>>>>>>>>>>>>>>>>>>>>>
119
+ >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
120
+ >>>>>>>>>>>>>>>>>>>>>>>>>
121
+ >>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
122
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
123
+ >>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
124
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
125
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
126
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
127
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
128
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
129
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
130
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
131
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
132
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
133
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
134
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
135
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
136
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
137
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
138
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
139
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
140
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
141
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
142
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
143
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
144
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
145
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
146
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
147
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
148
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
149
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
150
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
151
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
152
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
153
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
154
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
155
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
156
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
157
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
158
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
159
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
160
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
161
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
162
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
163
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
164
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
165
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
166
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
167
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
168
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
169
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
170
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
171
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
172
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
173
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
174
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -0,0 +1,13 @@
1
+ From: Foo Discourse <foo@discourse.org>
2
+ Subject: This email is going to be forwarded
3
+ Date: 01 January 2019 at 12:00:00 EET
4
+ To: bar@discourse.org
5
+
6
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
7
+ lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
8
+ amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
9
+ sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
10
+ dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
11
+ risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
12
+ turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
13
+ id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -0,0 +1,14 @@
1
+ From: Foo Discourse <foo@discourse.org>
2
+ Date: Tue, Jan 01, 2019 at 12:00 PM
3
+ Subject: This email is going to be forwarded
4
+ To: <bar@discourse.org>
5
+
6
+
7
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
8
+ lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
9
+ amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
10
+ sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
11
+ dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
12
+ risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
13
+ turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
14
+ id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -19,6 +19,10 @@ class TestEmailReplyTrimmer < Minitest::Test
19
19
  assert_match(/\r\n/, File.read("test/emails/normalize_line_endings.txt"))
20
20
  end
21
21
 
22
+ def test_is_reply_at_end?
23
+ Timeout::timeout(1) { assert_nil(EmailReplyTrimmer.send(:is_reply_at_end?, "bq" * 100)) }
24
+ end
25
+
22
26
  EMAILS.each do |filename|
23
27
  name = File.basename(filename, ".txt")
24
28
  define_method("test_#{name}") do
@@ -30,7 +34,7 @@ class TestEmailReplyTrimmer < Minitest::Test
30
34
  EMBEDDED_EMAILS = %w{
31
35
  email_headers_1 email_headers_2 email_headers_3 email_headers_4
32
36
  embedded_email_10 embedded_email_german_3 embedded_email_spanish_2
33
- forwarded_message
37
+ forwarded_message forwarded_gmail forwarded_apple
34
38
  }
35
39
 
36
40
  EMBEDDED_EMAILS.each do |name|
@@ -0,0 +1,2 @@
1
+ Hi Neil,
2
+ Thanks for prompt response!
@@ -0,0 +1 @@
1
+ Спасибо еще раз.
@@ -0,0 +1 @@
1
+ This email has been forwarded from Apple Mail.
@@ -0,0 +1 @@
1
+ This email has been forwarded from Gmail.
File without changes
@@ -0,0 +1,21 @@
1
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet dictum
2
+ lectus, at efficitur neque. Class aptent taciti sociosqu ad litora torquent per
3
+ conubia nostra, per inceptos himenaeos. Aenean dictum pulvinar tortor non
4
+ ultricies. Maecenas cursus lobortis dolor quis feugiat. Integer efficitur,
5
+ mauris sit amet lobortis consectetur, urna augue feugiat mi, et tempor dui
6
+ sapien vehicula dolor. Aenean sit amet ultrices tortor. Praesent vel porttitor
7
+ risus, eu fringilla nibh. Phasellus sollicitudin elit id tortor dapibus, at
8
+ euismod odio sodales. Ut est ex, pharetra malesuada dui maximus, ullamcorper
9
+ fringilla turpis. Nullam gravida, elit blandit commodo blandit, velit sem
10
+ ornare odio, eu ultricies arcu ex sit amet libero. Vestibulum eu fringilla
11
+ ante, nec blandit nunc.
12
+
13
+ Nullam nec viverra ipsum. Nullam semper eu urna id facilisis. Nam blandit
14
+ dictum eros, sit amet auctor dui fermentum a. Quisque finibus magna nisi, ac
15
+ hendrerit purus lacinia ut. Donec maximus, enim id tincidunt vulputate, libero
16
+ ex tempor elit, vitae sagittis libero leo sed leo. Quisque non gravida ex,
17
+ efficitur interdum neque. Interdum et malesuada fames ac ante ipsum primis in
18
+ faucibus. Phasellus rhoncus nisi vitae turpis bibendum luctus. Duis placerat
19
+ aliquam lectus, pellentesque commodo dolor hendrerit quis. Suspendisse ipsum
20
+ sapien, interdum ac felis ac, mattis varius neque. Maecenas nec risus sit amet
21
+ ex aliquam vestibulum. Maecenas a turpis et turpis volutpat congue.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email_reply_trimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Régis Hanol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-14 00:00:00.000000000 Z
11
+ date: 2020-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.52.1
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: '0'
54
+ version: 0.52.1
55
55
  description: EmailReplyTrimmer is a small library to trim replies from plain text
56
56
  email.
57
57
  email:
@@ -61,7 +61,6 @@ extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
63
  - Gemfile
64
- - Gemfile.lock
65
64
  - LICENSE
66
65
  - README.md
67
66
  - Rakefile
@@ -80,6 +79,8 @@ files:
80
79
  - test/before/embedded_email_10.txt
81
80
  - test/before/embedded_email_german_3.txt
82
81
  - test/before/embedded_email_spanish_2.txt
82
+ - test/before/forwarded_apple.txt
83
+ - test/before/forwarded_gmail.txt
83
84
  - test/before/forwarded_message.txt
84
85
  - test/elided/delimiters.txt
85
86
  - test/elided/dual_embedded.txt
@@ -121,7 +122,8 @@ files:
121
122
  - test/elided/embedded_email_german_6.txt
122
123
  - test/elided/embedded_email_italian.txt
123
124
  - test/elided/embedded_email_norwegian.txt
124
- - test/elided/embedded_email_polish.txt
125
+ - test/elided/embedded_email_polish_1.txt
126
+ - test/elided/embedded_email_polish_2.txt
125
127
  - test/elided/embedded_email_portuguese.txt
126
128
  - test/elided/embedded_email_quote_text.txt
127
129
  - test/elided/embedded_email_russian_1.txt
@@ -129,12 +131,17 @@ files:
129
131
  - test/elided/embedded_email_spanish_1.txt
130
132
  - test/elided/embedded_email_spanish_2.txt
131
133
  - test/elided/embedded_email_swedish.txt
134
+ - test/elided/embedded_email_ukrainian.txt
135
+ - test/elided/forwarded_apple.txt
136
+ - test/elided/forwarded_gmail.txt
132
137
  - test/elided/forwarded_message.txt
133
138
  - test/elided/normalize_line_endings.txt
134
139
  - test/elided/quote_and_text.txt
135
140
  - test/elided/quote_only.txt
136
141
  - test/elided/retains_spaces_and_formatting.txt
137
142
  - test/elided/signatures.txt
143
+ - test/elided/spam_1.txt
144
+ - test/elided/spam_2.txt
138
145
  - test/elided/strip.txt
139
146
  - test/elided/text_only.txt
140
147
  - test/elided/usenet.txt
@@ -178,7 +185,8 @@ files:
178
185
  - test/emails/embedded_email_german_6.txt
179
186
  - test/emails/embedded_email_italian.txt
180
187
  - test/emails/embedded_email_norwegian.txt
181
- - test/emails/embedded_email_polish.txt
188
+ - test/emails/embedded_email_polish_1.txt
189
+ - test/emails/embedded_email_polish_2.txt
182
190
  - test/emails/embedded_email_portuguese.txt
183
191
  - test/emails/embedded_email_quote_text.txt
184
192
  - test/emails/embedded_email_russian_1.txt
@@ -186,12 +194,17 @@ files:
186
194
  - test/emails/embedded_email_spanish_1.txt
187
195
  - test/emails/embedded_email_spanish_2.txt
188
196
  - test/emails/embedded_email_swedish.txt
197
+ - test/emails/embedded_email_ukrainian.txt
198
+ - test/emails/forwarded_apple.txt
199
+ - test/emails/forwarded_gmail.txt
189
200
  - test/emails/forwarded_message.txt
190
201
  - test/emails/normalize_line_endings.txt
191
202
  - test/emails/quote_and_text.txt
192
203
  - test/emails/quote_only.txt
193
204
  - test/emails/retains_spaces_and_formatting.txt
194
205
  - test/emails/signatures.txt
206
+ - test/emails/spam_1.txt
207
+ - test/emails/spam_2.txt
195
208
  - test/emails/strip.txt
196
209
  - test/emails/text_only.txt
197
210
  - test/emails/usenet.txt
@@ -202,6 +215,8 @@ files:
202
215
  - test/embedded/embedded_email_10.txt
203
216
  - test/embedded/embedded_email_german_3.txt
204
217
  - test/embedded/embedded_email_spanish_2.txt
218
+ - test/embedded/forwarded_apple.txt
219
+ - test/embedded/forwarded_gmail.txt
205
220
  - test/embedded/forwarded_message.txt
206
221
  - test/matchers/does_not_contain_embedded_email.txt
207
222
  - test/test_email_matcher.rb
@@ -246,7 +261,8 @@ files:
246
261
  - test/trimmed/embedded_email_german_6.txt
247
262
  - test/trimmed/embedded_email_italian.txt
248
263
  - test/trimmed/embedded_email_norwegian.txt
249
- - test/trimmed/embedded_email_polish.txt
264
+ - test/trimmed/embedded_email_polish_1.txt
265
+ - test/trimmed/embedded_email_polish_2.txt
250
266
  - test/trimmed/embedded_email_portuguese.txt
251
267
  - test/trimmed/embedded_email_quote_text.txt
252
268
  - test/trimmed/embedded_email_russian_1.txt
@@ -254,12 +270,17 @@ files:
254
270
  - test/trimmed/embedded_email_spanish_1.txt
255
271
  - test/trimmed/embedded_email_spanish_2.txt
256
272
  - test/trimmed/embedded_email_swedish.txt
273
+ - test/trimmed/embedded_email_ukrainian.txt
274
+ - test/trimmed/forwarded_apple.txt
275
+ - test/trimmed/forwarded_gmail.txt
257
276
  - test/trimmed/forwarded_message.txt
258
277
  - test/trimmed/normalize_line_endings.txt
259
278
  - test/trimmed/quote_and_text.txt
260
279
  - test/trimmed/quote_only.txt
261
280
  - test/trimmed/retains_spaces_and_formatting.txt
262
281
  - test/trimmed/signatures.txt
282
+ - test/trimmed/spam_1.txt
283
+ - test/trimmed/spam_2.txt
263
284
  - test/trimmed/strip.txt
264
285
  - test/trimmed/text_only.txt
265
286
  - test/trimmed/usenet.txt
@@ -282,8 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
303
  - !ruby/object:Gem::Version
283
304
  version: '0'
284
305
  requirements: []
285
- rubyforge_project:
286
- rubygems_version: 2.6.13
306
+ rubygems_version: 3.0.3
287
307
  signing_key:
288
308
  specification_version: 4
289
309
  summary: Library to trim replies from plain text email.
@@ -1,38 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- email_reply_trimmer (0.1.7)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- ast (2.3.0)
10
- minitest (5.10.3)
11
- parallel (1.11.2)
12
- parser (2.4.0.0)
13
- ast (~> 2.2)
14
- powerpack (0.1.1)
15
- rainbow (2.2.2)
16
- rake
17
- rake (12.0.0)
18
- rubocop (0.49.1)
19
- parallel (~> 1.10)
20
- parser (>= 2.3.3.1, < 3.0)
21
- powerpack (~> 0.1)
22
- rainbow (>= 1.99.1, < 3.0)
23
- ruby-progressbar (~> 1.7)
24
- unicode-display_width (~> 1.0, >= 1.0.1)
25
- ruby-progressbar (1.8.1)
26
- unicode-display_width (1.3.0)
27
-
28
- PLATFORMS
29
- ruby
30
-
31
- DEPENDENCIES
32
- email_reply_trimmer!
33
- minitest (~> 5)
34
- rake (~> 12)
35
- rubocop (~> 0)
36
-
37
- BUNDLED WITH
38
- 1.16.0.pre.2