email_reply_trimmer 0.1.6 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Gemfile +4 -0
- data/Rakefile +1 -1
- data/email_reply_trimmer.gemspec +5 -1
- data/lib/email_reply_trimmer/delimiter_matcher.rb +1 -1
- data/lib/email_reply_trimmer/email_header_matcher.rb +25 -13
- data/lib/email_reply_trimmer/embedded_email_matcher.rb +52 -25
- data/lib/email_reply_trimmer/signature_matcher.rb +24 -10
- data/lib/email_reply_trimmer.rb +79 -35
- data/test/before/forwarded_apple.txt +1 -0
- data/test/before/forwarded_gmail.txt +1 -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.txt → embedded_email_polish_1.txt} +0 -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.txt → embedded_email_russian_1.txt} +0 -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/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.txt → embedded_email_polish_1.txt} +0 -0
- data/test/emails/embedded_email_polish_2.txt +11 -0
- data/test/emails/{embedded_email_russian.txt → embedded_email_russian_1.txt} +0 -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 +15 -0
- data/test/test_email_reply_trimmer.rb +7 -3
- 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.txt → embedded_email_polish_1.txt} +0 -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.txt → embedded_email_russian_1.txt} +0 -0
- 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 +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.
|
File without changes
|
@@ -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!
|
File without changes
|
@@ -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.
|
data/test/emails/signatures.txt
CHANGED
@@ -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,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(
|
26
|
-
assert_equal(
|
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,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
|