email_reply_trimmer 0.1.6 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +4 -0
  3. data/Rakefile +1 -1
  4. data/email_reply_trimmer.gemspec +5 -1
  5. data/lib/email_reply_trimmer/delimiter_matcher.rb +1 -1
  6. data/lib/email_reply_trimmer/email_header_matcher.rb +25 -13
  7. data/lib/email_reply_trimmer/embedded_email_matcher.rb +52 -25
  8. data/lib/email_reply_trimmer/signature_matcher.rb +24 -10
  9. data/lib/email_reply_trimmer.rb +79 -35
  10. data/test/before/forwarded_apple.txt +1 -0
  11. data/test/before/forwarded_gmail.txt +1 -0
  12. data/test/elided/email_headers_5.txt +23 -0
  13. data/test/elided/embedded_ception.txt +3 -3
  14. data/test/elided/embedded_email_12.txt +2 -2
  15. data/test/elided/embedded_email_13.txt +9 -0
  16. data/test/elided/embedded_email_14.txt +11 -0
  17. data/test/elided/embedded_email_15.txt +4 -0
  18. data/test/elided/embedded_email_16.txt +4 -0
  19. data/test/elided/embedded_email_17.txt +2 -0
  20. data/test/elided/embedded_email_18.txt +1 -0
  21. data/test/elided/embedded_email_19.txt +0 -0
  22. data/test/elided/embedded_email_chinese.txt +4 -0
  23. data/test/elided/embedded_email_german_4.txt +15 -0
  24. data/test/elided/embedded_email_german_5.txt +20 -0
  25. data/test/elided/embedded_email_german_6.txt +8 -0
  26. data/test/elided/embedded_email_norwegian.txt +9 -0
  27. data/test/elided/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
  28. data/test/elided/embedded_email_polish_2.txt +7 -0
  29. data/test/elided/embedded_email_quote_text.txt +5 -0
  30. data/test/elided/{embedded_email_russian.txt → embedded_email_russian_1.txt} +0 -0
  31. data/test/elided/embedded_email_russian_2.txt +23 -0
  32. data/test/elided/embedded_email_swedish.txt +8 -0
  33. data/test/elided/embedded_email_ukrainian.txt +17 -0
  34. data/test/elided/forwarded_apple.txt +15 -0
  35. data/test/elided/forwarded_gmail.txt +15 -0
  36. data/test/elided/signatures.txt +5 -0
  37. data/test/elided/spam_1.txt +75 -0
  38. data/test/elided/spam_2.txt +152 -0
  39. data/test/emails/email_headers_5.txt +37 -0
  40. data/test/emails/embedded_email_1.txt +1 -1
  41. data/test/emails/embedded_email_13.txt +14 -0
  42. data/test/emails/embedded_email_14.txt +16 -0
  43. data/test/emails/embedded_email_15.txt +9 -0
  44. data/test/emails/embedded_email_16.txt +16 -0
  45. data/test/emails/embedded_email_17.txt +38 -0
  46. data/test/emails/embedded_email_18.txt +7 -0
  47. data/test/emails/embedded_email_19.txt +13 -0
  48. data/test/emails/embedded_email_4.txt +13 -13
  49. data/test/emails/embedded_email_7.txt +4 -4
  50. data/test/emails/embedded_email_chinese.txt +7 -0
  51. data/test/emails/embedded_email_german_4.txt +18 -0
  52. data/test/emails/embedded_email_german_5.txt +23 -0
  53. data/test/emails/embedded_email_german_6.txt +14 -0
  54. data/test/emails/embedded_email_norwegian.txt +11 -0
  55. data/test/emails/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
  56. data/test/emails/embedded_email_polish_2.txt +11 -0
  57. data/test/emails/{embedded_email_russian.txt → embedded_email_russian_1.txt} +0 -0
  58. data/test/emails/embedded_email_russian_2.txt +26 -0
  59. data/test/emails/embedded_email_swedish.txt +20 -0
  60. data/test/emails/embedded_email_ukrainian.txt +19 -0
  61. data/test/emails/forwarded_apple.txt +17 -0
  62. data/test/emails/forwarded_gmail.txt +17 -0
  63. data/test/emails/signatures.txt +5 -0
  64. data/test/emails/spam_1.txt +75 -0
  65. data/test/emails/spam_2.txt +174 -0
  66. data/test/embedded/forwarded_apple.txt +13 -0
  67. data/test/embedded/forwarded_gmail.txt +14 -0
  68. data/test/matchers/does_not_contain_embedded_email.txt +5 -0
  69. data/test/test_email_matcher.rb +15 -0
  70. data/test/test_email_reply_trimmer.rb +7 -3
  71. data/test/trimmed/email_headers_5.txt +11 -0
  72. data/test/trimmed/embedded_email_13.txt +3 -0
  73. data/test/trimmed/embedded_email_14.txt +3 -0
  74. data/test/trimmed/embedded_email_15.txt +3 -0
  75. data/test/trimmed/embedded_email_16.txt +11 -0
  76. data/test/trimmed/embedded_email_17.txt +35 -0
  77. data/test/trimmed/embedded_email_18.txt +5 -0
  78. data/test/trimmed/embedded_email_19.txt +13 -0
  79. data/test/trimmed/embedded_email_chinese.txt +2 -0
  80. data/test/trimmed/embedded_email_german_4.txt +1 -0
  81. data/test/trimmed/embedded_email_german_5.txt +1 -0
  82. data/test/trimmed/embedded_email_german_6.txt +4 -0
  83. data/test/trimmed/embedded_email_norwegian.txt +1 -0
  84. data/test/trimmed/{embedded_email_polish.txt → embedded_email_polish_1.txt} +0 -0
  85. data/test/trimmed/embedded_email_polish_2.txt +2 -0
  86. data/test/trimmed/embedded_email_quote_text.txt +0 -5
  87. data/test/trimmed/{embedded_email_russian.txt → embedded_email_russian_1.txt} +0 -0
  88. data/test/trimmed/embedded_email_russian_2.txt +1 -0
  89. data/test/trimmed/embedded_email_swedish.txt +9 -0
  90. data/test/trimmed/embedded_email_ukrainian.txt +1 -0
  91. data/test/trimmed/forwarded_apple.txt +1 -0
  92. data/test/trimmed/forwarded_gmail.txt +1 -0
  93. data/test/trimmed/spam_1.txt +0 -0
  94. data/test/trimmed/spam_2.txt +21 -0
  95. metadata +122 -11
@@ -0,0 +1,18 @@
1
+
2
+ Hi there! I am replying from my german Google Inbox.
3
+
4
+ Max Mustermann <try_discourse@discoursemail.com> schrieb am Fr., 28.
5
+ Apr. 2017 um 11:53 Uhr:
6
+
7
+ > max_2 <http://try.discourse.org/u/cfstras_2>
8
+ > April 28
9
+
10
+ > Hi there! you should be getting a mail.
11
+ > ------------------------------
12
+
13
+ > Visit Topic <http://try.discourse.org/t/this-is-my-internal-test/716/2>
14
+ > or reply to this email to respond.
15
+
16
+ > To unsubscribe from these emails, click here
17
+ > <http://try.discourse.org/email/unsubscribe/badf00d>
18
+ > .
@@ -0,0 +1,23 @@
1
+ Okay. Will give it a whirl.
2
+
3
+ Erlend Sogge Heggen <meta@discoursemail.com> schrieb am Di., 16. Aug. 2016
4
+ um 12:52 Uhr:
5
+
6
+ > erlend_sh <https://meta.discourse.org/users/erlend_sh> Erlend Sogge Heggen
7
+ > <https://meta.discourse.org/users/erlend_sh> team
8
+ > August 16
9
+ >
10
+ > Hi Bob,
11
+ >
12
+ > Sure, it sounds like your requirements would fit our Standard plan. I
13
+ > suggest you sign up for a free trial, as that will be the best way to see
14
+ > for yourself if we support the kind of custom styling
15
+ >
16
+ > Sincerely,
17
+ >
18
+ > Erlend
19
+ >
20
+ --
21
+ Viele Grüße / Best regards
22
+
23
+ Bob
@@ -0,0 +1,14 @@
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.
5
+
6
+ Am 21.04.2016 17:48 schrieb "Einz Zwei" <noreply@discourse.pseuco.com
7
+ >:
8
+
9
+ > einz.zwei <https://discourse.pseuco.com/users/einz.zwei> einz
10
+ > zwei <https://discourse.pseuco.com/users/einz.zwei>
11
+ > 21. April
12
+ >
13
+ > Vielleicht noch eine wichtige Frage:
14
+ > Wann sollten wir diese Trainingsvideos veröffentlichen, es gibt 2
@@ -0,0 +1,11 @@
1
+ Thanx :-)
2
+
3
+ Sendt fra min iPad
4
+
5
+ Den 15. jun. 2016 kl. 20.42 skrev Jeff Atwood <info@discourse.org<mailto:info@discourse.org>>:
6
+
7
+ codinghorror<https://meta.discourse.org/users/codinghorror> Jeff Atwood<https://meta.discourse.org/users/codinghorror> co-founder
8
+ June 15
9
+
10
+
11
+ Enable tags in your admin, site settings.
@@ -0,0 +1,11 @@
1
+ Hi Neil,
2
+ Thanks for prompt response!
3
+
4
+
5
+ 23 mar 2017 21:25 "Neil Lalonde" <meta@discoursemail.com> napisał(a):
6
+
7
+ > neil <https://meta.discourse.org/users/neil> Neil Lalonde
8
+ > <https://meta.discourse.org/users/neil> Team
9
+ > March 23
10
+ >
11
+ > I have made required changes. Enjoy!
@@ -0,0 +1,26 @@
1
+ Yes.
2
+
3
+ 20 окт. 2016 г. 19:37 пользователь "Rafael dos Santos Silva" <
4
+ meta@discoursemail.com> написал:
5
+
6
+ > Falco <https://meta.discourse.org/users/falco> Rafael dos Santos Silva
7
+ > <https://meta.discourse.org/users/falco> team
8
+ > October 20
9
+ >
10
+ > Are you using our official docker install?
11
+ >
12
+ > If you are, try a rebuild:
13
+ >
14
+ > ssh root@server
15
+ > cd /var/discourse
16
+ > ./launcher rebuild app
17
+ >
18
+ > ------------------------------
19
+ >
20
+ > Visit Topic <https://meta.discourse.org/t/error-upgrading/51797/2> or
21
+ > reply to this email to respond.
22
+ >
23
+ > To unsubscribe from these emails, click here
24
+ > <https://meta.discourse.org/email/unsubscribe/184ce11578cd0abaddcb6e7460708971afed7278523347d3184a421229d87d08>
25
+ > .
26
+ >
@@ -0,0 +1,20 @@
1
+ Hi everyone!
2
+
3
+ Here you can find the pictures that I took https://foo.bar
4
+
5
+ It was a pleasure to support this event.
6
+
7
+ Best regards
8
+
9
+ Some One
10
+
11
+
12
+
13
+ Från: Foo Bar [mailto:noreply@foo.bar]
14
+ Skickat: den 5 juni 2017 12:22
15
+ Till: someone@domain.com
16
+ Ämne: [WAT] Photos from the symposium
17
+
18
+ If you have any pictures from any parts of the symposium that you are willing to share, please reply to this post to share them (you can simply copy and paste or drag'n'drop them into the text).
19
+
20
+ Here are the group pictures we took on Wednesday after lunch.
@@ -0,0 +1,19 @@
1
+ Спасибо еще раз.
2
+
3
+ 30 серп. 2016 р. 20:45 "Arpit" <no-reply@example.com> пише:
4
+
5
+ > meg <http://forum.example.com/users/foo> Foo
6
+ > <http://forum.example.com/users/foo>
7
+ > Август 30
8
+ >
9
+ > Когда будет точное название, напишите в личку и мы поменяем название.
10
+ > ------------------------------
11
+ >
12
+ > Visit Message
13
+ > <http://forum.example.com/t/slug/24>
14
+ > or reply to this email to respond.
15
+ >
16
+ > To unsubscribe from these emails, click here
17
+ > <http://forum.example.com/email/unsubscribe/0123456789>
18
+ > .
19
+ >
@@ -0,0 +1,17 @@
1
+ This email has been forwarded from Apple Mail.
2
+
3
+ > Begin forwarded message:
4
+ >
5
+ > From: Foo Discourse <foo@discourse.org>
6
+ > Subject: This email is going to be forwarded
7
+ > Date: 01 January 2019 at 12:00:00 EET
8
+ > To: bar@discourse.org
9
+ >
10
+ > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
11
+ > lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
12
+ > amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
13
+ > sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
14
+ > dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
15
+ > risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
16
+ > turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
17
+ > id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -0,0 +1,17 @@
1
+ This email has been forwarded from Gmail.
2
+
3
+ ---------- Forwarded message ---------
4
+ From: Foo Discourse <foo@discourse.org>
5
+ Date: Tue, Jan 01, 2019 at 12:00 PM
6
+ Subject: This email is going to be forwarded
7
+ To: <bar@discourse.org>
8
+
9
+
10
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
11
+ lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
12
+ amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
13
+ sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
14
+ dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
15
+ risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
16
+ turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
17
+ id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -26,3 +26,8 @@ Sent from my Windows 8 PC <http://windows.microsoft.com/consumer-preview>
26
26
  (sent from a phone)
27
27
  (Sent from mobile device)
28
28
  從我的 iPhone 傳送
29
+ Sent from [mail](https://go.microsoft.com/fwlink/?LinkId=550986) for windows 10
30
+ Verzonden met BlackBerry Work
31
+
32
+ Get Outlook for iOShttps://aka.ms/o0ukef
33
+ Get [Outlook for Android](https://aka.ms/ghei36)
@@ -0,0 +1,75 @@
1
+ > On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
2
+ >
3
+ >> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
4
+ >>
5
+ >>> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
6
+ >>>
7
+ >>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
8
+ >>>>
9
+ >>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
10
+ >>>>>
11
+ >>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
12
+ >>>>>>
13
+ >>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
14
+ >>>>>>>
15
+ >>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
16
+ >>>>>>>>
17
+ >>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
18
+ >>>>>>>>>
19
+ >>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
20
+ >>>>>>>>>>
21
+ >>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
22
+ >>>>>>>>>>>
23
+ >>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
24
+ >>>>>>>>>>>>
25
+ >>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
26
+ >>>>>>>>>>>>>
27
+ >>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
28
+ >>>>>>>>>>>>>>
29
+ >>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
30
+ >>>>>>>>>>>>>>>
31
+ >>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
32
+ >>>>>>>>>>>>>>>>
33
+ >>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
34
+ >>>>>>>>>>>>>>>>>
35
+ >>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
36
+ >>>>>>>>>>>>>>>>>>
37
+ >>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
38
+ >>>>>>>>>>>>>>>>>>>
39
+ >>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
40
+ >>>>>>>>>>>>>>>>>>>>
41
+ >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
42
+ >>>>>>>>>>>>>>>>>>>>>
43
+ >>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
44
+ >>>>>>>>>>>>>>>>>>>>>>
45
+ >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
46
+ >>>>>>>>>>>>>>>>>>>>>>>
47
+ >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
48
+ >>>>>>>>>>>>>>>>>>>>>>>>
49
+ >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
50
+ >>>>>>>>>>>>>>>>>>>>>>>>>
51
+ >>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
52
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
53
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
54
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
55
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
56
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
57
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
58
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
60
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
61
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
62
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
63
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
64
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
65
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
66
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
67
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
68
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
69
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
70
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
71
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
72
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
73
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
74
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
75
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
@@ -0,0 +1,174 @@
1
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet dictum
2
+ lectus, at efficitur neque. Class aptent taciti sociosqu ad litora torquent per
3
+ conubia nostra, per inceptos himenaeos. Aenean dictum pulvinar tortor non
4
+ ultricies. Maecenas cursus lobortis dolor quis feugiat. Integer efficitur,
5
+ mauris sit amet lobortis consectetur, urna augue feugiat mi, et tempor dui
6
+ sapien vehicula dolor. Aenean sit amet ultrices tortor. Praesent vel porttitor
7
+ risus, eu fringilla nibh. Phasellus sollicitudin elit id tortor dapibus, at
8
+ euismod odio sodales. Ut est ex, pharetra malesuada dui maximus, ullamcorper
9
+ fringilla turpis. Nullam gravida, elit blandit commodo blandit, velit sem
10
+ ornare odio, eu ultricies arcu ex sit amet libero. Vestibulum eu fringilla
11
+ ante, nec blandit nunc.
12
+
13
+ Nullam nec viverra ipsum. Nullam semper eu urna id facilisis. Nam blandit
14
+ dictum eros, sit amet auctor dui fermentum a. Quisque finibus magna nisi, ac
15
+ hendrerit purus lacinia ut. Donec maximus, enim id tincidunt vulputate, libero
16
+ ex tempor elit, vitae sagittis libero leo sed leo. Quisque non gravida ex,
17
+ efficitur interdum neque. Interdum et malesuada fames ac ante ipsum primis in
18
+ faucibus. Phasellus rhoncus nisi vitae turpis bibendum luctus. Duis placerat
19
+ aliquam lectus, pellentesque commodo dolor hendrerit quis. Suspendisse ipsum
20
+ sapien, interdum ac felis ac, mattis varius neque. Maecenas nec risus sit amet
21
+ ex aliquam vestibulum. Maecenas a turpis et turpis volutpat congue.
22
+
23
+ > On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
24
+ >
25
+ >> Hello world!
26
+ >>
27
+ >> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
28
+ >>
29
+ >>> Hello world!
30
+ >>>
31
+ >>> On Thu, Apr 30, 2020 at 10:07 AM, "someone" <someone@example.com> wrote:
32
+ >>>
33
+ >>>> Hello world!
34
+ >>>>
35
+ >>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
36
+ >>>>
37
+ >>>>> Hello world!
38
+ >>>>>
39
+ >>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
40
+ >>>>>
41
+ >>>>>> Hello world!
42
+ >>>>>>
43
+ >>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
44
+ >>>>>>
45
+ >>>>>>> Hello world!
46
+ >>>>>>>
47
+ >>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
48
+ >>>>>>>
49
+ >>>>>>>> Hello world!
50
+ >>>>>>>>
51
+ >>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
52
+ >>>>>>>>
53
+ >>>>>>>>> Hello world!
54
+ >>>>>>>>>
55
+ >>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
56
+ >>>>>>>>>
57
+ >>>>>>>>>> Hello world!
58
+ >>>>>>>>>>
59
+ >>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
60
+ >>>>>>>>>>
61
+ >>>>>>>>>>> Hello world!
62
+ >>>>>>>>>>>
63
+ >>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
64
+ >>>>>>>>>>>
65
+ >>>>>>>>>>>> Hello world!
66
+ >>>>>>>>>>>>
67
+ >>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
68
+ >>>>>>>>>>>>
69
+ >>>>>>>>>>>>> Hello world!
70
+ >>>>>>>>>>>>>
71
+ >>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
72
+ >>>>>>>>>>>>>
73
+ >>>>>>>>>>>>>> Hello world!
74
+ >>>>>>>>>>>>>>
75
+ >>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
76
+ >>>>>>>>>>>>>>
77
+ >>>>>>>>>>>>>>> Hello world!
78
+ >>>>>>>>>>>>>>>
79
+ >>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
80
+ >>>>>>>>>>>>>>>
81
+ >>>>>>>>>>>>>>>> Hello world!
82
+ >>>>>>>>>>>>>>>>
83
+ >>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
84
+ >>>>>>>>>>>>>>>>
85
+ >>>>>>>>>>>>>>>>> Hello world!
86
+ >>>>>>>>>>>>>>>>>
87
+ >>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
88
+ >>>>>>>>>>>>>>>>>
89
+ >>>>>>>>>>>>>>>>>> Hello world!
90
+ >>>>>>>>>>>>>>>>>>
91
+ >>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
92
+ >>>>>>>>>>>>>>>>>>
93
+ >>>>>>>>>>>>>>>>>>> Hello world!
94
+ >>>>>>>>>>>>>>>>>>>
95
+ >>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
96
+ >>>>>>>>>>>>>>>>>>>
97
+ >>>>>>>>>>>>>>>>>>>> Hello world!
98
+ >>>>>>>>>>>>>>>>>>>>
99
+ >>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
100
+ >>>>>>>>>>>>>>>>>>>>
101
+ >>>>>>>>>>>>>>>>>>>>> Hello world!
102
+ >>>>>>>>>>>>>>>>>>>>>
103
+ >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
104
+ >>>>>>>>>>>>>>>>>>>>>
105
+ >>>>>>>>>>>>>>>>>>>>>> Hello world!
106
+ >>>>>>>>>>>>>>>>>>>>>>
107
+ >>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
108
+ >>>>>>>>>>>>>>>>>>>>>>
109
+ >>>>>>>>>>>>>>>>>>>>>>> Hello world!
110
+ >>>>>>>>>>>>>>>>>>>>>>>
111
+ >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
112
+ >>>>>>>>>>>>>>>>>>>>>>>
113
+ >>>>>>>>>>>>>>>>>>>>>>>> Hello world!
114
+ >>>>>>>>>>>>>>>>>>>>>>>>
115
+ >>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
116
+ >>>>>>>>>>>>>>>>>>>>>>>>
117
+ >>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
118
+ >>>>>>>>>>>>>>>>>>>>>>>>>
119
+ >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
120
+ >>>>>>>>>>>>>>>>>>>>>>>>>
121
+ >>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
122
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
123
+ >>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
124
+ >>>>>>>>>>>>>>>>>>>>>>>>>>
125
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
126
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
127
+ >>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
128
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>
129
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
130
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
131
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
132
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>
133
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
134
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
135
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
136
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
137
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
138
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
139
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
140
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
141
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
142
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
143
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
144
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
145
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
146
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
147
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
148
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
149
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
150
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
151
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
152
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
153
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
154
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
155
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
156
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
157
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
158
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
159
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
160
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
161
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
162
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
163
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
164
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
165
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
166
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
167
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
168
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
169
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
170
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
171
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 30, 2020 at 10:06 AM, "someone" <someone@example.com> wrote:
172
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
173
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hello world!
174
+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -0,0 +1,13 @@
1
+ From: Foo Discourse <foo@discourse.org>
2
+ Subject: This email is going to be forwarded
3
+ Date: 01 January 2019 at 12:00:00 EET
4
+ To: bar@discourse.org
5
+
6
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
7
+ lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
8
+ amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
9
+ sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
10
+ dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
11
+ risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
12
+ turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
13
+ id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -0,0 +1,14 @@
1
+ From: Foo Discourse <foo@discourse.org>
2
+ Date: Tue, Jan 01, 2019 at 12:00 PM
3
+ Subject: This email is going to be forwarded
4
+ To: <bar@discourse.org>
5
+
6
+
7
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi auctor
8
+ lacus in metus vehicula, non dictum mi consequat. Nunc eget quam sit
9
+ amet dolor scelerisque cursus. Etiam laoreet lectus a rutrum
10
+ sollicitudin. Nullam sit amet lorem id ante lobortis fringilla. Duis
11
+ dictum tempus sem et ultrices. Sed ac lectus ante. Vivamus interdum,
12
+ risus non tincidunt accumsan, purus mi accumsan dolor, vitae euismod
13
+ turpis orci ut est. Integer ut ante eu velit dignissim ullamcorper non
14
+ id nibh. Nulla auctor magna erat, et posuere sapien gravida convallis.
@@ -0,0 +1,5 @@
1
+ > am 09.09.2017 um 21:42 sssssss
2
+ ßßßßßßßß fffffff
3
+
4
+ > in message from sssssss
5
+ ßßßßßßßß fffffff
@@ -0,0 +1,15 @@
1
+ require "minitest/autorun"
2
+ require "email_reply_trimmer"
3
+ require "timeout"
4
+
5
+ class TestEmailReplyTrimmer < Minitest::Test
6
+ def test_does_not_hang_when_no_embedded_email_is_found
7
+ Timeout.timeout(5) do
8
+ EmbeddedEmailMatcher.match?(example("does_not_contain_embedded_email.txt"))
9
+ end
10
+ end
11
+
12
+ def example(filename)
13
+ File.read("test/matchers/#{filename}").strip
14
+ end
15
+ end
@@ -19,18 +19,22 @@ 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
25
- assert_equal(trim(filename), trimmed(filename), "[TRIMMED] EMAIL: #{filename}")
26
- assert_equal(elide(filename), elided(filename), "[ELIDED] EMAIL: #{filename}")
29
+ assert_equal(trimmed(filename), trim(filename), "[TRIMMED] EMAIL: #{filename}")
30
+ assert_equal(elided(filename), elide(filename), "[ELIDED] EMAIL: #{filename}")
27
31
  end
28
32
  end
29
33
 
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,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,3 @@
1
+ yes we're fine
2
+
3
+ thanks
@@ -0,0 +1,3 @@
1
+ I just saw the standard plan has the slack integration.
2
+
3
+ Thank you!
@@ -0,0 +1,3 @@
1
+ [message body]
2
+
3
+ / Greetings
@@ -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,5 @@
1
+ nil && 2.0 + 12.0
2
+
3
+ It should be:
4
+
5
+ 2.0 && 2.0 + 12.0