diff --git a/src/helpers/detect-markdown.ts b/src/helpers/detect-markdown.ts index cbc2234..aa62831 100644 --- a/src/helpers/detect-markdown.ts +++ b/src/helpers/detect-markdown.ts @@ -23,7 +23,7 @@ function stripCode(text: string): string { * from markdown that mentions HTML tags in code examples. */ export function looksLikeHtml(body: string): boolean { - const sample = stripCode(body.slice(0, 2000)); + const sample = stripCode(body).slice(0, 2000); return HTML_PATTERNS.some((p) => p.test(sample)); } diff --git a/test/unit/helpers/detect-markdown.test.ts b/test/unit/helpers/detect-markdown.test.ts index c622c57..b624a69 100644 --- a/test/unit/helpers/detect-markdown.test.ts +++ b/test/unit/helpers/detect-markdown.test.ts @@ -42,6 +42,12 @@ describe('looksLikeHtml', () => { expect(looksLikeHtml(md)).toBe(false); }); + it('ignores HTML in code blocks longer than 2000 characters', () => { + const md = + '# Setup\n\n```html\n\n\n' + 'x'.repeat(3000) + '\n\n\n```\n'; + expect(looksLikeHtml(md)).toBe(false); + }); + it('still detects real HTML outside of code blocks', () => { const html = '\n\n```not a code block\n```\n'; expect(looksLikeHtml(html)).toBe(true);