@@ -350,4 +350,50 @@ describe('useMarkdown', () => {
350350 expect ( processed . value ) . toBe ( 'A library ' )
351351 } )
352352 } )
353+
354+ describe ( 'HTML tags inside backtick spans (regression #1478)' , ( ) => {
355+ it ( 'preserves HTML tags inside backtick code spans' , ( ) => {
356+ const processed = useMarkdown ( { text : 'Use `<div>` for layout' } )
357+ expect ( processed . value ) . toBe ( 'Use <code><div></code> for layout' )
358+ } )
359+
360+ it ( 'preserves multiple HTML tags inside one backtick span' , ( ) => {
361+ const processed = useMarkdown ( { text : 'Use `<div><span>test</span></div>` element' } )
362+ expect ( processed . value ) . toBe (
363+ 'Use <code><div><span>test</span></div></code> element' ,
364+ )
365+ } )
366+
367+ it ( 'preserves backtick spans while stripping bare HTML tags' , ( ) => {
368+ const processed = useMarkdown ( { text : '`<a>` some <b>bold</b> text `<c>`' } )
369+ expect ( processed . value ) . toBe ( '<code><a></code> some bold text <code><c></code>' )
370+ } )
371+
372+ it ( 'strips HTML tags outside backticks but keeps backtick content' , ( ) => {
373+ const processed = useMarkdown ( { text : '<b>hello</b> and `<input type="text">` world' } )
374+ expect ( processed . value ) . toBe (
375+ 'hello and <code><input type="text"></code> world' ,
376+ )
377+ } )
378+
379+ it ( 'handles backtick span with self-closing tag' , ( ) => {
380+ const processed = useMarkdown ( { text : 'Use `<br/>` for line breaks' } )
381+ expect ( processed . value ) . toBe ( 'Use <code><br/></code> for line breaks' )
382+ } )
383+
384+ it ( 'handles backtick spans without HTML inside' , ( ) => {
385+ const processed = useMarkdown ( { text : '`code` and <b>stripped</b>' } )
386+ expect ( processed . value ) . toBe ( '<code>code</code> and stripped' )
387+ } )
388+
389+ it ( 'preserves HTML comments inside backtick spans' , ( ) => {
390+ const processed = useMarkdown ( { text : 'Use `<!-- comment -->` syntax' } )
391+ expect ( processed . value ) . toBe ( 'Use <code><!-- comment --></code> syntax' )
392+ } )
393+
394+ it ( 'strips HTML comments outside backtick spans' , ( ) => {
395+ const processed = useMarkdown ( { text : '`<div>` <!-- badge --> is an element' } )
396+ expect ( processed . value ) . toBe ( '<code><div></code> is an element' )
397+ } )
398+ } )
353399} )
0 commit comments