Handle stripnewlines for plain text list
Handle stripping new lines when the plain text input is a markdown list.
This commit is contained in:
@@ -347,6 +347,9 @@ void TextHandlerTest::receiveStripNewlines()
|
|||||||
const QString testInputStringRich = QStringLiteral("Test<br>many<br />new<br>lines.");
|
const QString testInputStringRich = QStringLiteral("Test<br>many<br />new<br>lines.");
|
||||||
const QString testOutputString = QStringLiteral("Test many new lines.");
|
const QString testOutputString = QStringLiteral("Test many new lines.");
|
||||||
|
|
||||||
|
const QString testInputStringPlain2 = QStringLiteral("* List\n* Items");
|
||||||
|
const QString testOutputString2 = QStringLiteral("List Items");
|
||||||
|
|
||||||
TextHandler testTextHandler;
|
TextHandler testTextHandler;
|
||||||
testTextHandler.setData(testInputStringPlain);
|
testTextHandler.setData(testInputStringPlain);
|
||||||
|
|
||||||
@@ -354,9 +357,11 @@ void TextHandlerTest::receiveStripNewlines()
|
|||||||
QCOMPARE(testTextHandler.handleRecieveRichText(Qt::PlainText, nullptr, nullptr, true), testOutputString);
|
QCOMPARE(testTextHandler.handleRecieveRichText(Qt::PlainText, nullptr, nullptr, true), testOutputString);
|
||||||
|
|
||||||
testTextHandler.setData(testInputStringRich);
|
testTextHandler.setData(testInputStringRich);
|
||||||
|
|
||||||
QCOMPARE(testTextHandler.handleRecievePlainText(Qt::RichText, true), testOutputString);
|
QCOMPARE(testTextHandler.handleRecievePlainText(Qt::RichText, true), testOutputString);
|
||||||
QCOMPARE(testTextHandler.handleRecieveRichText(Qt::RichText, nullptr, nullptr, true), testOutputString);
|
QCOMPARE(testTextHandler.handleRecieveRichText(Qt::RichText, nullptr, nullptr, true), testOutputString);
|
||||||
|
|
||||||
|
testTextHandler.setData(testInputStringPlain2);
|
||||||
|
QCOMPARE(testTextHandler.handleRecievePlainText(Qt::RichText, true), testOutputString2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format,
|
|||||||
fileCaption = e.plainBody() + " | " + fileCaption;
|
fileCaption = e.plainBody() + " | " + fileCaption;
|
||||||
}
|
}
|
||||||
textHandler.setData(fileCaption);
|
textHandler.setData(fileCaption);
|
||||||
return !fileCaption.isEmpty() ? textHandler.handleRecievePlainText() : i18n("a file");
|
return !fileCaption.isEmpty() ? textHandler.handleRecievePlainText(Qt::PlainText, stripNewlines) : i18n("a file");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString body;
|
QString body;
|
||||||
|
|||||||
@@ -151,12 +151,6 @@ QString TextHandler::handleRecievePlainText(Qt::TextFormat inputFormat, const bo
|
|||||||
// Strip mx-reply if present.
|
// Strip mx-reply if present.
|
||||||
m_dataBuffer.remove(TextRegex::removeRichReply);
|
m_dataBuffer.remove(TextRegex::removeRichReply);
|
||||||
|
|
||||||
if (stripNewlines) {
|
|
||||||
m_dataBuffer.replace(QStringLiteral("<br>"), QStringLiteral(" "));
|
|
||||||
m_dataBuffer.replace(QStringLiteral("<br />"), QStringLiteral(" "));
|
|
||||||
m_dataBuffer.replace(u'\n', QStringLiteral(" "));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Escaping then unescaping allows < and > to be maintained in a plain text string
|
// Escaping then unescaping allows < and > to be maintained in a plain text string
|
||||||
// otherwise markdownToHTML will strip what it thinks is a bad html tag entirely.
|
// otherwise markdownToHTML will strip what it thinks is a bad html tag entirely.
|
||||||
if (inputFormat == Qt::PlainText) {
|
if (inputFormat == Qt::PlainText) {
|
||||||
@@ -169,6 +163,14 @@ QString TextHandler::handleRecievePlainText(Qt::TextFormat inputFormat, const bo
|
|||||||
*/
|
*/
|
||||||
m_dataBuffer = markdownToHTML(m_dataBuffer);
|
m_dataBuffer = markdownToHTML(m_dataBuffer);
|
||||||
|
|
||||||
|
if (stripNewlines) {
|
||||||
|
m_dataBuffer.replace(QStringLiteral("<br>\n"), QStringLiteral(" "));
|
||||||
|
m_dataBuffer.replace(QStringLiteral("<br>"), QStringLiteral(" "));
|
||||||
|
m_dataBuffer.replace(QStringLiteral("<br />\n"), QStringLiteral(" "));
|
||||||
|
m_dataBuffer.replace(QStringLiteral("<br />"), QStringLiteral(" "));
|
||||||
|
m_dataBuffer.replace(u'\n', QStringLiteral(" "));
|
||||||
|
}
|
||||||
|
|
||||||
// Strip all tags/attributes except code blocks which will be escaped.
|
// Strip all tags/attributes except code blocks which will be escaped.
|
||||||
QString outputString;
|
QString outputString;
|
||||||
nextTokenType();
|
nextTokenType();
|
||||||
@@ -193,6 +195,7 @@ QString TextHandler::handleRecievePlainText(Qt::TextFormat inputFormat, const bo
|
|||||||
outputString = unescapeHtml(outputString);
|
outputString = unescapeHtml(outputString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
outputString = outputString.trimmed();
|
||||||
return outputString;
|
return outputString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user