Update markdown.js to handle line breaks and code blocks more effectively
This commit is contained in:
@@ -188,28 +188,8 @@ export function markdownToHTML(text) {
|
|||||||
)}" target="_blank" rel="noreferrer noopener"><span class="md-link__label">${label}</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="md-icon md-icon-external"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg><span class="md-link__tooltip">${tooltip}</span></a>`;
|
)}" target="_blank" rel="noreferrer noopener"><span class="md-link__label">${label}</span> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="md-icon md-icon-external"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg><span class="md-link__tooltip">${tooltip}</span></a>`;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 6) Convert line-breaks to <br> for NON-code content
|
// 6) Convert line-breaks to <br /> for NON-code content (preserve blank lines)
|
||||||
html = html.replace(/\n/g, '<br>');
|
html = html.replace(/\n/g, '<br />');
|
||||||
|
|
||||||
// 6.1) Collapse 3+ consecutive <br> into a double-break
|
|
||||||
html = html.replace(/(?:<br>[\s]*){3,}/g, '<br><br>');
|
|
||||||
|
|
||||||
// 6.2) Normalize spacing around block elements
|
|
||||||
html = html
|
|
||||||
.replace(
|
|
||||||
/(<br>\s*)+(<(?:h[1-4]|hr|table|ul|ol|blockquote)\b[^>]*>)/g,
|
|
||||||
'<br>$2'
|
|
||||||
)
|
|
||||||
.replace(
|
|
||||||
/(<\/(?:h[1-4]|table|ul|ol|blockquote)>\s*)(<br>\s*)+/g,
|
|
||||||
'$1<br>'
|
|
||||||
);
|
|
||||||
|
|
||||||
// 6.3) Trim breaks after headings
|
|
||||||
html = html.replace(/(<\/h[1-4]>)(<br>\s*)+/g, '$1');
|
|
||||||
|
|
||||||
// 6.4) Trim trailing breaks after lists
|
|
||||||
html = html.replace(/(<\/(?:ul|ol)>)(<br>\s*)+/g, '$1');
|
|
||||||
|
|
||||||
// 7) Restore code blocks with header + copy button
|
// 7) Restore code blocks with header + copy button
|
||||||
html = html.replace(/@@CODEBLOCK(\d+)@@/g, (_, idx) => {
|
html = html.replace(/@@CODEBLOCK(\d+)@@/g, (_, idx) => {
|
||||||
@@ -230,14 +210,6 @@ export function markdownToHTML(text) {
|
|||||||
return `<div class="md-codeblock">${head}${body}</div>`;
|
return `<div class="md-codeblock">${head}${body}</div>`;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 8) Cleanup around codeblocks
|
|
||||||
html = html
|
|
||||||
.replace(/<br>\s*(?=<div class="md-codeblock"\b)/g, '')
|
|
||||||
.replace(
|
|
||||||
/(<div class="md-codeblock"[^>]*>[\s\S]*?<\/div>)\s*<br>/g,
|
|
||||||
'$1'
|
|
||||||
);
|
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user