kconfig: qconf: simplify character replacement

Replace the hand crafted lookup table with a QHash. This has the nice benefit
that the added offsets can not get out of sync with the length of the
replacement strings.

Signed-off-by: Rolf Eike Beer <eb@emlix.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
Rolf Eike Beer 2024-10-23 08:39:15 +02:00 committed by Masahiro Yamada
parent 5a4bed0fad
commit 8b36d3f2e6

View File

@ -1122,28 +1122,19 @@ QString ConfigInfoView::print_filter(const QString &str)
{
QRegularExpression re("[<>&\"\\n]");
QString res = str;
QHash<QChar, QString> patterns;
patterns['<'] = "&lt;";
patterns['>'] = "&gt;";
patterns['&'] = "&amp;";
patterns['"'] = "&quot;";
patterns['\n'] = "<br>";
for (int i = 0; (i = res.indexOf(re, i)) >= 0;) {
switch (res[i].toLatin1()) {
case '<':
res.replace(i, 1, "&lt;");
i += 4;
break;
case '>':
res.replace(i, 1, "&gt;");
i += 4;
break;
case '&':
res.replace(i, 1, "&amp;");
i += 5;
break;
case '"':
res.replace(i, 1, "&quot;");
i += 6;
break;
case '\n':
res.replace(i, 1, "<br>");
i += 4;
break;
const QString n = patterns.value(res[i], QString());
if (!n.isEmpty()) {
res.replace(i, 1, n);
i += n.length();
}
}
return res;