fix: preserve inline code in cjk emphasis

This commit is contained in:
shixy
2026-03-14 17:12:03 +08:00
parent 38fc733b99
commit 2aa9790789
8 changed files with 252 additions and 1 deletions
@@ -34,3 +34,31 @@ test("bold without code (regression)", () => {
assert.match(html, /<strong[^>]*>纯粗体文本<\/strong>/);
assert.doesNotMatch(html, /<code/);
});
test("bold with inline code containing backticks", () => {
const html = render("**``a`b``**");
assert.match(html, /<code[^>]*>a&#96;b<\/code>/);
});
test("emphasis with inline code containing backticks", () => {
const html = render("*``a`b``*");
assert.match(html, /<em[^>]*><code[^>]*>a&#96;b<\/code><\/em>/);
});
test("bold with inline code containing consecutive backticks", () => {
const html = render("**```a``b```**");
assert.match(html, /<code[^>]*>a&#96;&#96;b<\/code>/);
});
test("bold with inline code containing only backticks", () => {
const html = render("**```` `` ````**");
assert.match(html, /<code[^>]*>&#96;&#96;<\/code>/);
});
test("bold with inline code containing only spaces", () => {
const oneSpace = render("**`` ``**");
assert.match(oneSpace, /<code[^>]*> <\/code>/);
const twoSpaces = render("**`` ``**");
assert.match(twoSpaces, /<code[^>]*> <\/code>/);
});