Skip to content

Commit 196bacd

Browse files
committed
fix(output): replace spoilered text with '[Spoiler]' in plain text fallback
1 parent c96947b commit 196bacd

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

.changeset/msc4454.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
default: patch
3+
---
4+
5+
spoilered text now gets replaced with `[Spoiler]` in the plain text fallback, as per MSC4454

src/app/components/editor/output.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ const elementToPlainText = (node: CustomElement, children: string): string => {
196196
}
197197
};
198198

199+
const SPOILERINPUTREGEX = /\|\|.+?\|\|/g;
200+
199201
/**
200202
* convert slate internal representation to a plain text string that can be sent to the server
201203
* @param node the slate node
@@ -213,8 +215,9 @@ export const toPlainText = (
213215
if (Array.isArray(node))
214216
return node.map((n) => toPlainText(n, isMarkdown, stripNickname, nickNameReplacement)).join('');
215217
if (Text.isText(node)) {
218+
let { text } = node;
219+
text = text.replaceAll(SPOILERINPUTREGEX, '[Spoiler]');
216220
if (stripNickname && nickNameReplacement) {
217-
let { text } = node;
218221
nickNameReplacement?.keys().forEach((key) => {
219222
const replacement = nickNameReplacement.get(key) ?? '';
220223
text = text.replaceAll(key, replacement);
@@ -224,7 +227,7 @@ export const toPlainText = (
224227
: text;
225228
}
226229
return isMarkdown
227-
? unescapeMarkdownBlockSequences(node.text, unescapeMarkdownInlineSequences)
230+
? unescapeMarkdownBlockSequences(text, unescapeMarkdownInlineSequences)
228231
: node.text;
229232
}
230233

0 commit comments

Comments
 (0)