email_reply_trimmer 0.1.12 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c6d1c0ab5d84950fc4aba02e7b9edbd6c0fabd44
4
- data.tar.gz: e895017cee98f971b69057efc009a014ad738bd0
2
+ SHA256:
3
+ metadata.gz: c094ba472eabd06ed02276c4ec9e42cb32ccb873871e46e55c46cd4640425470
4
+ data.tar.gz: 968cee2c9b3de46ef86814dd84ee8449c400e9c5fa8d61363cbb90064204fadf
5
5
  SHA512:
6
- metadata.gz: c9b776fa074024dd86bf367d66ff4631f721db08a6f1e77f08e3952096bc25e1225524c10f564be7c8e204f9696e41130fbae5bc3e2de66d63bc9fa2cd6ee3c3
7
- data.tar.gz: ff55cb8bbfcedb3c0284839e92ff2c4161123b78cb9c5fe7601a9b04268c69633dcb714fe967c605bcb07fc43b619804312ecf0503ca3ed993c092f0a5d6883f
6
+ metadata.gz: 6c71cad161a2aaa27e813ff63f91b1e10359d73ffc95d0d01df0374dc8cc9a2ba506985cd4e33d12e63b3f41cd9e6f66bbe42293feea3f6e968c7d90e79a88de
7
+ data.tar.gz: e7e3661094d8b1183f572b7e847cac62a71215a341d12b627e0b2d5cfedfdad161f858b8aba3d97463d5ffda5919211da2b268dbd75e7edc48a95811d1e5b481
@@ -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.12"
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
@@ -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,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.
@@ -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,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.
@@ -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 @@
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.12
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: 2018-05-17 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
@@ -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
@@ -131,12 +132,16 @@ files:
131
132
  - test/elided/embedded_email_spanish_2.txt
132
133
  - test/elided/embedded_email_swedish.txt
133
134
  - test/elided/embedded_email_ukrainian.txt
135
+ - test/elided/forwarded_apple.txt
136
+ - test/elided/forwarded_gmail.txt
134
137
  - test/elided/forwarded_message.txt
135
138
  - test/elided/normalize_line_endings.txt
136
139
  - test/elided/quote_and_text.txt
137
140
  - test/elided/quote_only.txt
138
141
  - test/elided/retains_spaces_and_formatting.txt
139
142
  - test/elided/signatures.txt
143
+ - test/elided/spam_1.txt
144
+ - test/elided/spam_2.txt
140
145
  - test/elided/strip.txt
141
146
  - test/elided/text_only.txt
142
147
  - test/elided/usenet.txt
@@ -190,12 +195,16 @@ files:
190
195
  - test/emails/embedded_email_spanish_2.txt
191
196
  - test/emails/embedded_email_swedish.txt
192
197
  - test/emails/embedded_email_ukrainian.txt
198
+ - test/emails/forwarded_apple.txt
199
+ - test/emails/forwarded_gmail.txt
193
200
  - test/emails/forwarded_message.txt
194
201
  - test/emails/normalize_line_endings.txt
195
202
  - test/emails/quote_and_text.txt
196
203
  - test/emails/quote_only.txt
197
204
  - test/emails/retains_spaces_and_formatting.txt
198
205
  - test/emails/signatures.txt
206
+ - test/emails/spam_1.txt
207
+ - test/emails/spam_2.txt
199
208
  - test/emails/strip.txt
200
209
  - test/emails/text_only.txt
201
210
  - test/emails/usenet.txt
@@ -206,6 +215,8 @@ files:
206
215
  - test/embedded/embedded_email_10.txt
207
216
  - test/embedded/embedded_email_german_3.txt
208
217
  - test/embedded/embedded_email_spanish_2.txt
218
+ - test/embedded/forwarded_apple.txt
219
+ - test/embedded/forwarded_gmail.txt
209
220
  - test/embedded/forwarded_message.txt
210
221
  - test/matchers/does_not_contain_embedded_email.txt
211
222
  - test/test_email_matcher.rb
@@ -260,12 +271,16 @@ files:
260
271
  - test/trimmed/embedded_email_spanish_2.txt
261
272
  - test/trimmed/embedded_email_swedish.txt
262
273
  - test/trimmed/embedded_email_ukrainian.txt
274
+ - test/trimmed/forwarded_apple.txt
275
+ - test/trimmed/forwarded_gmail.txt
263
276
  - test/trimmed/forwarded_message.txt
264
277
  - test/trimmed/normalize_line_endings.txt
265
278
  - test/trimmed/quote_and_text.txt
266
279
  - test/trimmed/quote_only.txt
267
280
  - test/trimmed/retains_spaces_and_formatting.txt
268
281
  - test/trimmed/signatures.txt
282
+ - test/trimmed/spam_1.txt
283
+ - test/trimmed/spam_2.txt
269
284
  - test/trimmed/strip.txt
270
285
  - test/trimmed/text_only.txt
271
286
  - test/trimmed/usenet.txt
@@ -288,8 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
303
  - !ruby/object:Gem::Version
289
304
  version: '0'
290
305
  requirements: []
291
- rubyforge_project:
292
- rubygems_version: 2.6.14
306
+ rubygems_version: 3.0.3
293
307
  signing_key:
294
308
  specification_version: 4
295
309
  summary: Library to trim replies from plain text email.
@@ -1,37 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- email_reply_trimmer (0.1.11)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- ast (2.4.0)
10
- minitest (5.11.3)
11
- parallel (1.12.1)
12
- parser (2.4.0.2)
13
- ast (~> 2.3)
14
- powerpack (0.1.1)
15
- rainbow (3.0.0)
16
- rake (12.3.0)
17
- rubocop (0.52.1)
18
- parallel (~> 1.10)
19
- parser (>= 2.4.0.2, < 3.0)
20
- powerpack (~> 0.1)
21
- rainbow (>= 2.2.2, < 4.0)
22
- ruby-progressbar (~> 1.7)
23
- unicode-display_width (~> 1.0, >= 1.0.1)
24
- ruby-progressbar (1.9.0)
25
- unicode-display_width (1.3.0)
26
-
27
- PLATFORMS
28
- ruby
29
-
30
- DEPENDENCIES
31
- email_reply_trimmer!
32
- minitest (~> 5)
33
- rake (~> 12)
34
- rubocop (~> 0.52.1)
35
-
36
- BUNDLED WITH
37
- 1.16.1