email_reply_trimmer 0.1.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Gemfile +5 -0
- data/Gemfile.lock +98 -0
- data/README.md +4 -4
- data/Rakefile +4 -7
- data/devenv.lock +184 -0
- data/devenv.nix +4 -0
- data/devenv.yaml +8 -0
- data/email_reply_trimmer.gemspec +8 -2
- data/lib/email_reply_trimmer/delimiter_matcher.rb +3 -2
- data/lib/email_reply_trimmer/email_header_matcher.rb +21 -8
- data/lib/email_reply_trimmer/embedded_email_matcher.rb +53 -25
- data/lib/email_reply_trimmer/empty_line_matcher.rb +1 -0
- data/lib/email_reply_trimmer/quote_matcher.rb +1 -0
- data/lib/email_reply_trimmer/signature_matcher.rb +24 -9
- data/lib/email_reply_trimmer.rb +102 -37
- data/test/before/forwarded_apple.txt +1 -0
- data/test/before/forwarded_gmail.txt +1 -0
- data/test/elided/block_code_spacers.txt +0 -0
- data/test/elided/email_headers_5.txt +23 -0
- data/test/elided/embedded_ception.txt +3 -3
- data/test/elided/embedded_email_12.txt +2 -2
- data/test/elided/embedded_email_13.txt +9 -0
- data/test/elided/embedded_email_14.txt +11 -0
- data/test/elided/embedded_email_15.txt +4 -0
- data/test/elided/embedded_email_16.txt +4 -0
- data/test/elided/embedded_email_17.txt +2 -0
- data/test/elided/embedded_email_18.txt +1 -0
- data/test/elided/embedded_email_19.txt +0 -0
- data/test/elided/embedded_email_chinese.txt +4 -0
- data/test/elided/embedded_email_german_4.txt +15 -0
- data/test/elided/embedded_email_german_5.txt +20 -0
- data/test/elided/embedded_email_german_6.txt +8 -0
- data/test/elided/embedded_email_norwegian.txt +9 -0
- data/test/elided/embedded_email_polish_2.txt +7 -0
- data/test/elided/embedded_email_quote_text.txt +5 -0
- data/test/elided/embedded_email_russian_2.txt +23 -0
- data/test/elided/embedded_email_swedish.txt +8 -0
- data/test/elided/embedded_email_ukrainian.txt +17 -0
- data/test/elided/forwarded_apple.txt +15 -0
- data/test/elided/forwarded_gmail.txt +15 -0
- data/test/elided/signatures.txt +5 -0
- data/test/elided/spam_1.txt +75 -0
- data/test/elided/spam_2.txt +152 -0
- data/test/emails/block_code_spacers.txt +13 -0
- data/test/emails/email_headers_5.txt +37 -0
- data/test/emails/embedded_email_1.txt +1 -1
- data/test/emails/embedded_email_13.txt +14 -0
- data/test/emails/embedded_email_14.txt +16 -0
- data/test/emails/embedded_email_15.txt +9 -0
- data/test/emails/embedded_email_16.txt +16 -0
- data/test/emails/embedded_email_17.txt +38 -0
- data/test/emails/embedded_email_18.txt +7 -0
- data/test/emails/embedded_email_19.txt +13 -0
- data/test/emails/embedded_email_4.txt +13 -13
- data/test/emails/embedded_email_7.txt +4 -4
- data/test/emails/embedded_email_chinese.txt +7 -0
- data/test/emails/embedded_email_german_4.txt +18 -0
- data/test/emails/embedded_email_german_5.txt +23 -0
- data/test/emails/embedded_email_german_6.txt +14 -0
- data/test/emails/embedded_email_norwegian.txt +11 -0
- data/test/emails/embedded_email_polish_2.txt +11 -0
- data/test/emails/embedded_email_russian_2.txt +26 -0
- data/test/emails/embedded_email_swedish.txt +20 -0
- data/test/emails/embedded_email_ukrainian.txt +19 -0
- data/test/emails/forwarded_apple.txt +17 -0
- data/test/emails/forwarded_gmail.txt +17 -0
- data/test/emails/signatures.txt +5 -0
- data/test/emails/spam_1.txt +75 -0
- data/test/emails/spam_2.txt +174 -0
- data/test/embedded/forwarded_apple.txt +13 -0
- data/test/embedded/forwarded_gmail.txt +14 -0
- data/test/matchers/does_not_contain_embedded_email.txt +5 -0
- data/test/test_email_matcher.rb +16 -0
- data/test/test_email_reply_trimmer.rb +8 -3
- data/test/trimmed/block_code_spacers.txt +13 -0
- data/test/trimmed/email_headers_5.txt +11 -0
- data/test/trimmed/embedded_email_13.txt +3 -0
- data/test/trimmed/embedded_email_14.txt +3 -0
- data/test/trimmed/embedded_email_15.txt +3 -0
- data/test/trimmed/embedded_email_16.txt +11 -0
- data/test/trimmed/embedded_email_17.txt +35 -0
- data/test/trimmed/embedded_email_18.txt +5 -0
- data/test/trimmed/embedded_email_19.txt +13 -0
- data/test/trimmed/embedded_email_chinese.txt +2 -0
- data/test/trimmed/embedded_email_german_4.txt +1 -0
- data/test/trimmed/embedded_email_german_5.txt +1 -0
- data/test/trimmed/embedded_email_german_6.txt +4 -0
- data/test/trimmed/embedded_email_norwegian.txt +1 -0
- data/test/trimmed/embedded_email_polish_2.txt +2 -0
- data/test/trimmed/embedded_email_quote_text.txt +0 -5
- data/test/trimmed/embedded_email_russian_2.txt +1 -0
- data/test/trimmed/embedded_email_swedish.txt +9 -0
- data/test/trimmed/embedded_email_ukrainian.txt +1 -0
- data/test/trimmed/forwarded_apple.txt +1 -0
- data/test/trimmed/forwarded_gmail.txt +1 -0
- data/test/trimmed/spam_1.txt +0 -0
- data/test/trimmed/spam_2.txt +21 -0
- metadata +147 -15
- /data/test/elided/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
- /data/test/elided/{embedded_email_russian.txt → embedded_email_russian_1.txt} +0 -0
- /data/test/emails/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
- /data/test/emails/{embedded_email_russian.txt → embedded_email_russian_1.txt} +0 -0
- /data/test/trimmed/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
- /data/test/trimmed/{embedded_email_russian.txt → embedded_email_russian_1.txt} +0 -0
@@ -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.
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "email_reply_trimmer"
|
4
|
+
require "timeout"
|
5
|
+
|
6
|
+
class TestEmailReplyTrimmer < Minitest::Test
|
7
|
+
def test_does_not_hang_when_no_embedded_email_is_found
|
8
|
+
Timeout.timeout(5) do
|
9
|
+
EmbeddedEmailMatcher.match?(example("does_not_contain_embedded_email.txt"))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def example(filename)
|
14
|
+
File.read("test/matchers/#{filename}").strip
|
15
|
+
end
|
16
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "minitest/autorun"
|
2
3
|
require "email_reply_trimmer"
|
3
4
|
|
@@ -19,18 +20,22 @@ class TestEmailReplyTrimmer < Minitest::Test
|
|
19
20
|
assert_match(/\r\n/, File.read("test/emails/normalize_line_endings.txt"))
|
20
21
|
end
|
21
22
|
|
23
|
+
def test_is_reply_at_end?
|
24
|
+
Timeout::timeout(1) { assert_nil(EmailReplyTrimmer.send(:is_reply_at_end?, "bq" * 100)) }
|
25
|
+
end
|
26
|
+
|
22
27
|
EMAILS.each do |filename|
|
23
28
|
name = File.basename(filename, ".txt")
|
24
29
|
define_method("test_#{name}") do
|
25
|
-
assert_equal(
|
26
|
-
assert_equal(
|
30
|
+
assert_equal(trimmed(filename), trim(filename), "[TRIMMED] EMAIL: #{filename}")
|
31
|
+
assert_equal(elided(filename), elide(filename), "[ELIDED] EMAIL: #{filename}")
|
27
32
|
end
|
28
33
|
end
|
29
34
|
|
30
35
|
EMBEDDED_EMAILS = %w{
|
31
36
|
email_headers_1 email_headers_2 email_headers_3 email_headers_4
|
32
37
|
embedded_email_10 embedded_email_german_3 embedded_email_spanish_2
|
33
|
-
forwarded_message
|
38
|
+
forwarded_message forwarded_gmail forwarded_apple
|
34
39
|
}
|
35
40
|
|
36
41
|
EMBEDDED_EMAILS.each do |name|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Hi Erlend,
|
2
|
+
|
3
|
+
I don’t know what a “legally recognised educational institution” means for you.
|
4
|
+
|
5
|
+
We’re based in Sweden and we provide education to our people across the globe.
|
6
|
+
|
7
|
+
We want to try Discourse in small scale first to see it will add value to our communities.
|
8
|
+
|
9
|
+
Best regards,
|
10
|
+
|
11
|
+
//Jef
|
@@ -0,0 +1,11 @@
|
|
1
|
+
> From: "Albert Wagner" <alwagner@tcac.net>
|
2
|
+
>
|
3
|
+
> > Some guy at ibraheem@localhost(?) needs to be unsubscribed. I
|
4
|
+
> > keep getting bounces from his ISP everytime I post. Surely,
|
5
|
+
> > everyone else is getting the same?
|
6
|
+
>
|
7
|
+
> Surely it doesn't need to be said anymore, but I *still* am.
|
8
|
+
> What's happening with this?
|
9
|
+
|
10
|
+
Yep, me too, although I bet due to RubyConf/OOPSLA, it may be a little
|
11
|
+
longer yet...
|
@@ -0,0 +1,35 @@
|
|
1
|
+
The intent was to return nil when the first value was nil.
|
2
|
+
That was the op's issue.
|
3
|
+
If one of the values was nil, she/he wanted nil.
|
4
|
+
|
5
|
+
Nil && anything_else will always return nil, and I will not evaluate the
|
6
|
+
second clause.
|
7
|
+
|
8
|
+
|
9
|
+
> >>>>>>>>
|
10
|
+
> It should be:
|
11
|
+
> 2.0 && 2.0 + 12.0
|
12
|
+
> <<<<<<<<<
|
13
|
+
>
|
14
|
+
> Ah! Yes, that works.
|
15
|
+
>
|
16
|
+
>
|
17
|
+
People are intent on not understanding, aren't they.
|
18
|
+
|
19
|
+
def nil_add_12 f
|
20
|
+
f && f + 12.0
|
21
|
+
end
|
22
|
+
|
23
|
+
Generalised to two parameters:
|
24
|
+
|
25
|
+
def nil_add a, b
|
26
|
+
a && b && a + b
|
27
|
+
end
|
28
|
+
|
29
|
+
The only quirk is the way they handle `false`.
|
30
|
+
|
31
|
+
This is not tested, but it may be possible to do this, too:
|
32
|
+
|
33
|
+
f&.+ b
|
34
|
+
|
35
|
+
Cheers
|
@@ -0,0 +1,13 @@
|
|
1
|
+
I had a really hard time with the official guide, so when I finally
|
2
|
+
figured it out, I wrote one of my own:
|
3
|
+
|
4
|
+
|
5
|
+
http://ryanlue.com/posts/2017-02-18-how-to-publish-a-gem
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
Let me know if you like it (or if you don't) – any feedback is highly
|
10
|
+
appreciated!
|
11
|
+
|
12
|
+
|
13
|
+
—Ryan
|
@@ -0,0 +1 @@
|
|
1
|
+
Hi there! I am replying from my german Google Inbox.
|
@@ -0,0 +1 @@
|
|
1
|
+
Okay. Will give it a whirl.
|
@@ -0,0 +1,4 @@
|
|
1
|
+
Ich habe konzeptionell eine Präferenz für die zweite Option. Die 2 VLs
|
2
|
+
stellen die Inhalte vor, und präsentieren diese in einen größeren Kontext.
|
3
|
+
Dann beginnt das Training der technischen Finessen mit Trainingsblatt,
|
4
|
+
Trainingsvideos usw. Bin gleichzeitig robust, sofern nötig.
|
@@ -0,0 +1 @@
|
|
1
|
+
Thanx :-)
|
@@ -1,7 +1,2 @@
|
|
1
|
-
> This seems like a problem that would be better solved at the web server
|
2
|
-
> level, rather than by the application. If nothing else, adding an instance
|
3
|
-
> of Nginx as an SSL/TLS reverse-proxy would very quickly take care of this.
|
4
|
-
>
|
5
|
-
|
6
1
|
when I said looks possible, I pointed to rack because that's still the web
|
7
2
|
server level
|
@@ -0,0 +1 @@
|
|
1
|
+
Yes.
|
@@ -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.
|