first commit
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
// ═══════════════════════════════════════════════════════
|
||||
// Markdown Preview
|
||||
// ═══════════════════════════════════════════════════════
|
||||
function renderMarkdown() {
|
||||
const md = document.getElementById('mdInput').value;
|
||||
if (!md) { document.getElementById('mdPreview').innerHTML = '<span style="color:var(--text-muted)">Preview will appear here...</span>'; return; }
|
||||
let html = md
|
||||
.replace(/^### (.+)$/gm, '<h3>$1</h3>')
|
||||
.replace(/^## (.+)$/gm, '<h2>$1</h2>')
|
||||
.replace(/^# (.+)$/gm, '<h1>$1</h1>')
|
||||
.replace(/^---$/gm, '<hr>')
|
||||
.replace(/```([\s\S]*?)```/g, '<pre><code>$1</code></pre>')
|
||||
.replace(/`([^`]+)`/g, '<code>$1</code>')
|
||||
.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
|
||||
.replace(/\*(.+?)\*/g, '<em>$1</em>')
|
||||
.replace(/~~(.+?)~~/g, '<del>$1</del>')
|
||||
.replace(/^\> (.+)$/gm, '<blockquote>$1</blockquote>')
|
||||
.replace(/^\- (.+)$/gm, '<li>$1</li>')
|
||||
.replace(/^\* (.+)$/gm, '<li>$1</li>')
|
||||
.replace(/^\d+\. (.+)$/gm, '<li>$1</li>')
|
||||
.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>')
|
||||
.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1" style="max-width:100%;border-radius:8px;">')
|
||||
.replace(/\n\n/g, '</p><p>')
|
||||
.replace(/\n/g, '<br>');
|
||||
html = '<p>' + html + '</p>';
|
||||
// Wrap consecutive li in ul
|
||||
html = html.replace(/(<li>.*?<\/li>)+/gs, '<ul>$&</ul>');
|
||||
document.getElementById('mdPreview').innerHTML = html;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user