email_reply_trimmer 0.1.12 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
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