m->d: spoiler reasons & reply-quote separation
a few m2d converter improvements
This commit is contained in:
parent
7756a34a5f
commit
355ebfe2af
1 changed files with 14 additions and 1 deletions
|
@ -33,6 +33,12 @@ const markdownEscapes = [
|
|||
[/^>/g, '\\>'],
|
||||
[/_/g, '\\_'],
|
||||
[/^(\d+)\. /g, '$1\\. ']
|
||||
/*
|
||||
Strikethrough is deliberately not escaped. Usually when Matrix users type ~~ it's not because they wanted to send ~~,
|
||||
it's because they wanted strikethrough and it didn't work because their client doesn't support it.
|
||||
As bridge developers, we can choose between "messages should look as similar as possible" vs "it was most likely intended to be strikethrough".
|
||||
I went with the latter. Even though the appearance doesn't match, I'd rather it displayed as originally intended for 80% of the readers than for 0%.
|
||||
*/
|
||||
]
|
||||
|
||||
const turndownService = new TurndownService({
|
||||
|
@ -91,7 +97,11 @@ turndownService.addRule("spoiler", {
|
|||
},
|
||||
|
||||
replacement: function (content, node) {
|
||||
return "||" + content + "||"
|
||||
if (node.getAttribute("data-mx-spoiler")) {
|
||||
// escape parentheses so it can't become a link
|
||||
return `\\(${node.getAttribute("data-mx-spoiler")}\\) ||${content}||`
|
||||
}
|
||||
return `||${content}||`
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -630,6 +640,9 @@ async function eventToMessage(event, guild, di) {
|
|||
// It's designed for commonmark, we need to replace the space-space-newline with just newline
|
||||
content = content.replace(/ \n/g, "\n")
|
||||
|
||||
// If there's a blockquote at the start of the message body and this message is a reply, they should be visually separated
|
||||
if (replyLine && content.startsWith("> ")) content = "\n" + content
|
||||
|
||||
// SPRITE SHEET EMOJIS FEATURE:
|
||||
content = await uploadEndOfMessageSpriteSheet(content, attachments, pendingFiles)
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue