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, '\\>'],
|
||||||
[/_/g, '\\_'],
|
[/_/g, '\\_'],
|
||||||
[/^(\d+)\. /g, '$1\\. ']
|
[/^(\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({
|
const turndownService = new TurndownService({
|
||||||
|
@ -91,7 +97,11 @@ turndownService.addRule("spoiler", {
|
||||||
},
|
},
|
||||||
|
|
||||||
replacement: function (content, node) {
|
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
|
// It's designed for commonmark, we need to replace the space-space-newline with just newline
|
||||||
content = content.replace(/ \n/g, "\n")
|
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:
|
// SPRITE SHEET EMOJIS FEATURE:
|
||||||
content = await uploadEndOfMessageSpriteSheet(content, attachments, pendingFiles)
|
content = await uploadEndOfMessageSpriteSheet(content, attachments, pendingFiles)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue