mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 12:30:24 +00:00
fix(markdown): require paired || delimiters for spoiler detection (#26105)
* fix(markdown): require paired || delimiters for spoiler detection An unpaired || (odd count across all inline tokens) would open a spoiler that never closes, causing closeRemainingStyles to extend it to the end of the text. This made all content after an unpaired || appear as hidden/spoiler in Telegram. Pre-count || delimiters across the entire inline token group and skip spoiler injection entirely when the count is less than 2 or odd. This prevents single | characters and unpaired || from triggering spoiler formatting. Closes #26068 Co-authored-by: Cursor <cursoragent@cursor.com> * fix: preserve valid spoiler pairs with trailing unmatched delimiters (#26105) (thanks @Sid-Qin) --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
This commit is contained in:
@@ -94,4 +94,22 @@ describe("markdownToTelegramHtml", () => {
|
||||
const res = markdownToTelegramHtml("||**secret** text||");
|
||||
expect(res).toBe("<tg-spoiler><b>secret</b> text</tg-spoiler>");
|
||||
});
|
||||
|
||||
it("does not treat single pipe as spoiler", () => {
|
||||
const res = markdownToTelegramHtml("( ̄_ ̄|) face");
|
||||
expect(res).not.toContain("tg-spoiler");
|
||||
expect(res).toContain("|");
|
||||
});
|
||||
|
||||
it("does not treat unpaired || as spoiler", () => {
|
||||
const res = markdownToTelegramHtml("before || after");
|
||||
expect(res).not.toContain("tg-spoiler");
|
||||
expect(res).toContain("||");
|
||||
});
|
||||
|
||||
it("keeps valid spoiler pairs when a trailing || is unmatched", () => {
|
||||
const res = markdownToTelegramHtml("||secret|| trailing ||");
|
||||
expect(res).toContain("<tg-spoiler>secret</tg-spoiler>");
|
||||
expect(res).toContain("trailing ||");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user