Bugfix/markdown parsing (#2002)
Removed replacing of newlines in already parsed HTML documents Signed-off-by: Leon Schmidt <mail@leon.wtf> Co-authored-by: Benoit Marty <benoitm@matrix.org>
This commit is contained in:
parent
44cb8cdeca
commit
29123ac726
@ -10,6 +10,7 @@ Improvements 🙌:
|
|||||||
|
|
||||||
Bugfix 🐛:
|
Bugfix 🐛:
|
||||||
- Display name not shown under Settings/General (#1926)
|
- Display name not shown under Settings/General (#1926)
|
||||||
|
- Wrong markdown parsing (#350, #1375, #1939, #1982)
|
||||||
- Words containing my name should not trigger notifications (#1781)
|
- Words containing my name should not trigger notifications (#1781)
|
||||||
- Fix changing language issue
|
- Fix changing language issue
|
||||||
- Fix FontSize issue (#1483, #1787)
|
- Fix FontSize issue (#1483, #1787)
|
||||||
|
@ -33,7 +33,7 @@ internal class MarkdownParser @Inject constructor(
|
|||||||
private val textContentRenderer: TextContentRenderer
|
private val textContentRenderer: TextContentRenderer
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val mdSpecialChars = "[`_\\-\\*>\\.\\[\\]#~]".toRegex()
|
private val mdSpecialChars = "[`_\\-*>.\\[\\]#~]".toRegex()
|
||||||
|
|
||||||
fun parse(text: String): TextContent {
|
fun parse(text: String): TextContent {
|
||||||
// If no special char are detected, just return plain text
|
// If no special char are detected, just return plain text
|
||||||
@ -54,8 +54,7 @@ internal class MarkdownParser @Inject constructor(
|
|||||||
return if (isFormattedTextPertinent(text, cleanHtmlText)) {
|
return if (isFormattedTextPertinent(text, cleanHtmlText)) {
|
||||||
// According to https://matrix.org/docs/spec/client_server/latest#m-room-message-msgtypes:
|
// According to https://matrix.org/docs/spec/client_server/latest#m-room-message-msgtypes:
|
||||||
// The plain text version of the HTML should be provided in the body.
|
// The plain text version of the HTML should be provided in the body.
|
||||||
val plainText = textContentRenderer.render(document)
|
TextContent(text, cleanHtmlText.trim())
|
||||||
TextContent(plainText, cleanHtmlText.postTreatment())
|
|
||||||
} else {
|
} else {
|
||||||
TextContent(text)
|
TextContent(text)
|
||||||
}
|
}
|
||||||
@ -63,15 +62,4 @@ internal class MarkdownParser @Inject constructor(
|
|||||||
|
|
||||||
private fun isFormattedTextPertinent(text: String, htmlText: String?) =
|
private fun isFormattedTextPertinent(text: String, htmlText: String?) =
|
||||||
text != htmlText && htmlText != "<p>${text.trim()}</p>\n"
|
text != htmlText && htmlText != "<p>${text.trim()}</p>\n"
|
||||||
|
|
||||||
/**
|
|
||||||
* The parser makes some mistakes, so deal with it here
|
|
||||||
*/
|
|
||||||
private fun String.postTreatment(): String {
|
|
||||||
return this
|
|
||||||
// Remove extra space before and after the content
|
|
||||||
.trim()
|
|
||||||
// There is no need to include new line in an html-like source
|
|
||||||
.replace("\n", "")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user