String.prototype.parseMarkdown = function () { /* _ ._ _ _. ._ | _| _ ._ |_) _. ._ _ o ._ _ | | | (_| | |< (_| (_) \/\/ | | | (_| | _> | | | (_| _| */ var markdown = "\n" + this + "\n\n"; // fügt dem Anfang & Ende Zeilenumbrüche hinzu, zur weiteren Verarbeitung //BLOCKELEMENTE markdown = markdown.replace(/\n(\>{1}(((.+)\n{1})*))/g, "
$1") // erkennt und umschließt Zitate (blockquote) .replace(/\n\>/g, " ") // löscht überflüssige ">" .replace(/
\>/g, "") // löscht erstes ">" Eines Zitates .replace(/(\n\*)(?=\n)/g, "$1 ") // erkennt Leere Listenpunkte .replace(/(\n\d+\.[ ](((.*)([\n][\d ]+[. ])?.*)*))/g, "\n$1\n
") // erkennt und umschließt nummerierte Listen (ol) .replace(/\n(?:(\d+)\.[ ]((.*)(\n[ ][ ]+.*)*))|\n\d+\.(?=\n)/g, '$2 ') // erkennt Listenelemente (li) einer nummerierten Liste und setzt die korrekte value .replace(/\n\*{1}[ ](((.*)([\n][\* ][ ])?.*)*)/g, "\n\n* $1\n
") // erkennt und umschließt unnummerierte Listen (ul) .replace(/\n(?:\*{1}[ ]((.*)(\n[ ][ ].*)*))|\n\*(?=\n)/g, "\n$1 ") // erkennt Listenelemente (li) einer unnumerierten Liste .replace(/!(?:([^\)\n]*)\n([^\)\n]*))\)/g, '!$1$2)') // entfernt Zeilenumbrüche in Bildern (IE 9) .replace(/\n\s{0,3}#{2}\s(.*)/g, "\n$1
") // erkennt und umschließt h2-Überschriften .replace(/\n\s{0,3}#{1}\s(.*)/g, "\n$1
") // erkennt und umschließt h1-Überschriften .replace(/[ ]\#+(<\/h\d>)/g, "$1"); // entfernt Schließende Rauten //PARAGRAPHEN & INLINE-ELEMENTE markdown = markdown.replace(/\n(([^<\n]+\n)+)(?=\n)/g, "$1
") // findet Paragraphen ohne Blockelemente und umschließt sie .replace(/^\n|\n+$/g, "") // entfernt "\n" am Anfang & Ende des Strings .replace(/\*{2}([^*\n]*(\*[^*\n]+\*[^*\n]*)*)\*{2}/g, "$1") // erkennt **fetten Text** .replace(/\*{1}([^*\n]+)\*{1}/g, "$1") // erkennt *kursiven Text* .replace(/!\[(.*)]\(([^\s]*)\s\"(.*)\"\)/g, '') // erkennt Bilder (img) mit src, alt & title .replace(/\[([^\]]*)\]\(([^\)"]*)(?:"([^"]*)")?\)/g, '$1') // erkennt Links mit opt. Titel .replace(/([^"])(https?:\/\/[^\.]*\..{1,4}\/?.*)(\n|\s)/g, '$1$2$3') // erkennt Links in der Form http://der-link.de .replace(/(<\/h\d>|
|
|<\/ul>|<\/ol>|
|<\/li>|<\/p>)\n/g, "$1") // entfernt Zeilenumbruch nach Block-Elementen .replace(/\n(<\/blockquote>|
|
|
||<\/p>)/g, "$1") // entfernt Zeilenumbruch vor einigen Zitaten .replace(/\n/g, "
"); // erstellt break (br) bei Inline-Zeilenumbrüchen /* _ |_ _ ._ ._ _ _. _|_ o _ ._ ._ _ | (_) | | | | (_| |_ | (/_ | |_| | | (_| _| */ markdown = markdown.replace(/(<\/h\d>|<\/blockquote>|
||<\/p>|
|<\/ul>|<\/ol>|
|<\/li>)/g, "$1\n") // für bessere Lesbarkeit des HTML-Codes wird ein Zeilenumbruch hinter einigen Elemente gesetzt .replace(/(
- ]*>)/g, "\t$1") // Listenelemente werden mit einem Tabulator eingerückt .replace(/(<\/blockquote>|<\/p>|<\/ul>|<\/ol>)/g, "$1\n"); // Blockelemente werden abgetrennt return markdown; // geparstes Ergebnis wird zurückgegeben };