@theSplit:
Also du hattest mir ja Vorgeschlagen mal das Testdokument von @BrotherJohn zu benutzen.
Vorläufige Ergebnis, naja müsste ich es benoten würde ich sagen 3
[src=html5]
<h1>Ein Testdokument</h1>
<p>
Absätze sind die grundlegenden Blockelemente.</p>
<p>
Ein neuer Absatz braucht mindestens eine Leerzeile.</p>
<p>
Mehrere geht genauso und führen zum gleichen Ergebnis.</p>
<p>
Einen Absatz darf man beliebig<br/>
umbrechen. Es bleibt ein einzelner Absatz ohne (!) Zeilenumbruch. Bonus: Harte Zeilenumbrüche innerhalb eines Absatzes (aber nicht am Absatzanfang oder -ende) macht man am Zeilenende mit einem Backslash oder mindestens zwei Leerzeichen. Ja, Leerzeichen. Vollkommen bescheuerte Idee, finde ich, aber so ists festgelegt.</p>
<p>
Führende Leerzeichen sind ok<br/>
und werden entfernt.</p>
<p>
Ausnahme: Bei der ersten Zeile eines Absatzes dürfen es max. 3 LZ sein, sonst wird ein Codeblock draus – der von der Aufgabe nicht gefordert ist. Also könnte man auf die Spezialbehandlung für erste Zeilen verzichten.</p>
<p>
Viel Inline-Formatierung ist ja nicht gefordert: <strong>Fett</strong> und <i>kursiv</i>. Was kann man denn damit noch anstellen ... Wer sagt eigentlich, dass man immer nur ganze Wörter formatieren will: Donau<i>dampf</i>schifffahrts<strong>kapitäns</strong>mütze.</p>
<p>
In der Aufgabe steht nichts von geschachtelter Formatierung, Aber <i><strong>fettkursiv</strong></i> oder <i></i>fett und <i>kursiv</i><i></i> ist ja nicht sooo weit aus der Welt. Trotzdem würde ich das als Bonus ansehen.</p>
<p>
Inline-Formatierung wird der Reihe nach geparst und dangling Sternchen bleiben simple Sternchen. Beispiel: In <i>C++</i> (kursiv) wird der Pointer mit einem Sternchen (*) markiert. Der komplette Regelsatz ist relativ komplex und steht hier: <a href="http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis">http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis</a></p>
<p>
Zu den Überschriften: Da die Aufgabenstellung so vage ist, alles laut Spec.</p>
<p>
### Laut Aufgabenstellung ist dies keine Überschrift, sondern ein normaler Absatz (da nur H1 und H2 gefordert sind).</p>
#Auch ein normaler Absatz, da mindestens ein Leerzeichen nach dem # stehen muss.<br/>
<h1>normale H1-Überschrift</h1>
<h1> genauso normale H1-Überschrift</h1>
<h1>auch eine normale H1 mit optionalem schließenden Hash</h1>
<h1>auch das ist eine normale H1, die Anzahl der Schließhashes muss nicht übereinstimmen ##</h1>
<h2>normale H2</h2>
<h2>H2: keine Schließhashes, da nicht per Leerzeichen getrennt####</h2>
<h2>H2: keine Schließhashes, da noch ## Text danach</h2>
<br/>
Spec sagt: “The opening # character may be indented 0-3 spaces.”<br/>
<h1>H1</h1>
<h1>H1</h1>
<h1>H1</h1>
<p>
# keine H1. Eigentlich ein Codeblock, aber der ist von der Aufgabe nicht gefordert. Ich würde es als normalen Absatz interpretieren.</p>
<p>
Mehrzeilige Überschriften geht nicht. Leerzeilen vor/nach Überschriften sind optional.</p>
Ein Absatz.<br/>
<h2>Eine H2</h2>
<p>
Noch ein Absatz. ##</p>
Nicht von den Hashes am Ende verwirren lassen!<br/>
<h2>> Das hier ist eine interessant formatierte H2-Überschrift <</h2>
<br/>
Und wenn wir schon bei den spitzen Klammern sind:<blockquote> Ein Zitatabsatz</blockquote>
<br/>
Oder umgebrochen:<blockquote> Auch das ist ein einzelner Zitatabsatz (ohne harten Zeilenumbruch!).</blockquote>
<br/>
Normale Zeilenumbrüche werden genauso behandelt wie im Fließtext.<blockquote> Ein einzelner Zitatabsatz<br/>
mit Umbruch.</blockquote>
<br/>
Man kann das natürlich auch kombinieren:<blockquote> Das mit dem Zitieren<br/>
schaut auf Anhieb einfach aus. Isses aber nich. Denn dieser ganze Block hier ist ein einzelner Zitatabsatz.</blockquote>
<br/>
Leerzeilen trennen Zitate.<blockquote> Zitat 1</blockquote>
<blockquote> Zitat 2</blockquote>
<br/>
Im Vergleich zu:<blockquote> Ein einzelnes Zitat. Es hat zwei Absätze.</blockquote>
<br/>
Eines noch:<blockquote> Das Leerzeichen nach der spitzen Klammer ist optional.</blockquote>
<br/>
<h2>Listen</h2>
<p>
Lasst uns Sachen auflisten; weil man mit Listen trotz der <i>am Zeilenanfang</i>-Einschränkung sooo viel Mist bauen kann!

</p>
<ul>
<li>eins</li>
<li>zwei</li>
<li>drei</li>
</ul>
<p>
So weit, so einfach.</p>
<ul>
<li>eins</li>
<li><strong>zwei</strong> in fett</li>
<li><i>drei</i> in kursiv</li>
<li>*Nein, das ist</li>
<li>nicht kursiv*. Das sind zwei Listenpunkte mit jeweils einem Stern im Text.</li>
</ul>
<p>
Folgendes</p>
<p>
*ist laut Spec<br/>
*keine Liste, sondern ein Absatz, der zwei Sternchen im Text hat. Wichtig: Kein kursiv wegen dem Zeilenumbruch direkt vor dem zweiten Stern!</p>
<p>
Apropos Absätze:</p>
<ul>
<li>langweiliger kurzer Listenpunkt</li>
<li>Der hier ist ein bisschen länglicher.</li>
</ul>
<br/>
V.a. hat er einen zweiten Absatz.<ul>
<li>noch ein Punkt</li>
<li>und noch einer</li>
</ul>
<p>
Huch!</p>
<ul>
<li></li>
</ul>
<p>
Ein einzelner Stern!? Das ist eine Liste mit einem einzelnen leeren Listenpunkt.</p>
Aber Vorsicht! Ein leerer Listenpunkt<ul>
<li></li>
</ul>
unterbricht nicht einen Absatz! Das da eine Zeile höher ist ein simpler Stern.<p>
Alles was leer ist, ist ein wunderschöner Grenzfall. Z.B.:</p>
<ul>
<li> Was ist das denn?</li>
<li>Na logisch! Ein Listenpunkt mit führender Leerzeile.</li>
<li>Todo: Nachlesen, was mit dem Zeilenumbruch passieren soll. Schlucken wie in normalen Absätzen? Oder bleibt der?</li>
</ul>
<p>
Ein leerer Punkt in einer Liste? Logisch:</p>
<ul>
<li>eins</li>
<li>* drei</li>
</ul>
<p>
Leere Zeilen sind auch was Feines. Sie trennen normalerweise Absätze. In Listen sieht das ein bisschen anders aus.</p>
<ul>
<li></li>
</ul>
Leerzeilen<br/>
<ul>
<li>zwischen Listenpunkten</li>
<li>sind erlaubt</li>
</ul>
<br/>
<ul>
<li></li>
</ul>
auch mehrere Leerzeilen<p>
Das da oben ist eine einzelne Liste.</p>
<ul>
<li></li>
</ul>
Die Aufgabenstellung fordert den Listenpunkt <i>am Zeilenanfang</i>.<p>
* Das hier ist also keine geschachtelte Liste (im Gegensatz zur Spec).</p>
Sondern? Ähm ... Ich würde sagen: eine Liste mit einem einzelnen Absatz in einem einzelnen Listenpunkt. Der Absatz enthält einen weichen Zeilenumbruch und ein dangling Sternchen.
[/src]
Einige Sonderfälle löst es mit bravur, bei anderen hakts.
Eine der Sachen, die ich bisher noch nicht betrachtet hatte waren die opt. Endtags von Überschriften.
Außerdem gibts noch ein paar Problemchen mit Aufzählungen, aber nichts, was nicht fixbar wäre