util/MailboxText.h
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | // S106-373/384: "Name <address>" for a recipient field. A name with RFC 5322 | ||
| 3 | // specials (a comma, '<', quotes …) is quoted with '\' and '"' escaped; | ||
| 4 | // control characters become spaces; without a name the bare address. | ||
| 5 | // Header-only and pure (used by the contact completion and compose). | ||
| 6 | |||
| 7 | #include <QString> | ||
| 8 | #include <algorithm> | ||
| 9 | |||
| 10 | namespace MailboxText { | ||
| 11 | |||
| 12 | 1080 | inline QString mailbox(const QString &name, const QString &address) { | |
| 13 | 1080 | QString display; | |
| 14 |
2/2✓ Branch 13 → 4 taken 9456 times.
✓ Branch 13 → 14 taken 1080 times.
|
10536 | for (const QChar c : name) |
| 15 |
4/5✓ Branch 5 → 6 taken 9455 times.
✓ Branch 5 → 8 taken 1 time.
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 10 taken 9455 times.
✓ Branch 11 → 12 taken 9456 times.
|
9456 | display.append(c.unicode() < 0x20 || c.unicode() == 0x7f ? QLatin1Char(' ') : c); |
| 16 |
1/1✓ Branch 14 → 15 taken 1080 times.
|
1080 | display = display.simplified(); |
| 17 |
5/6✓ Branch 18 → 19 taken 1079 times.
✓ Branch 18 → 21 taken 1 time.
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 22 taken 1079 times.
✓ Branch 23 → 24 taken 1 time.
✓ Branch 23 → 25 taken 1079 times.
|
1080 | if (display.isEmpty() || display == address) return address; |
| 18 |
3/4✓ Branch 25 → 26 taken 11 times.
✓ Branch 25 → 35 taken 1068 times.
✓ Branch 27 → 28 taken 11 times.
✗ Branch 27 → 35 not taken.
|
1090 | static const QString specials = QStringLiteral("()<>[]:;@\\,.\""); |
| 19 |
3/3✓ Branch 37 → 38 taken 1079 times.
✓ Branch 38 → 39 taken 24 times.
✓ Branch 38 → 55 taken 1055 times.
|
10419 | if (std::any_of(display.cbegin(), display.cend(), [](QChar c) { return specials.contains(c); })) { |
| 20 |
1/1✓ Branch 41 → 42 taken 24 times.
|
24 | display.replace(QLatin1String("\\"), QLatin1String("\\\\")); |
| 21 |
1/1✓ Branch 44 → 45 taken 24 times.
|
24 | display.replace(QLatin1String("\""), QLatin1String("\\\"")); |
| 22 |
2/2✓ Branch 49 → 50 taken 24 times.
✓ Branch 50 → 51 taken 24 times.
|
24 | display = QLatin1Char('"') + display + QLatin1Char('"'); |
| 23 | } | ||
| 24 |
3/3✓ Branch 60 → 61 taken 1079 times.
✓ Branch 61 → 62 taken 1079 times.
✓ Branch 62 → 63 taken 1079 times.
|
3237 | return display + QStringLiteral(" <") + address + QLatin1Char('>'); |
| 25 | 1080 | } | |
| 26 | |||
| 27 | } // namespace MailboxText | ||
| 28 |