"Offene" Markdown-Parser-Bibliothek für .NET/Mono

Ich suche eine Open-Source- Markdown - Parsing-Bibliothek für .NET/Mono (dh verwendbar aus C#-Code) (vorzugsweise mit MIT/BSD-Lizenz oder ähnlichem).

Ich habe verschiedene solcher Bibliotheken gefunden, aber das einzige Problem bei allen ist, dass sie alle die aus Markdown-Text gesammelten Informationen in ein festes Ausgabeformat konvertieren, normalerweise HTML.

Ich suche einen Markdown-Parser, der (mindestens) eine der folgenden Aufgaben erfüllt:

  • Feuerereignisse für die Komponenten von Markdown-Text (wie es SAX-Parser für XML tun)
  • Lassen Sie mich die Textkomponenten ziehen (wie XmlReaderbei XML)
  • Erstellen Sie eine Datenstruktur (wie DOM für XML), die den Inhalt des Markdown-Textes für die weitere programmgesteuerte Verarbeitung darstellt

Ich versuche, dies auf eine nicht-hackige Weise zu erreichen, das heißt, Lösungen, die die Markdown-Quelle in HTML konvertieren lassen, nur um etwas mit diesem HTML zu tun und es anschließend wieder in Markdown zu konvertieren, klingen nicht wartbar genug.

Könnten Sie nicht einfach einen HTML-Parser verwenden, um die HTML-Zeichenfolge in DOM zu analysieren?
@svick: Entschuldigung, ich suche keine Hacky-Lösung. Diese Anforderung wurde der Frage hinzugefügt. Ich habe aber auch gerade eine praktikable Lösung gefunden.
Warte, zurück zu Markdown konvertieren? Das hast du vorher nicht erwähnt.
@svick: Jede der drei von mir vorgeschlagenen Optionen beschreibt eine Möglichkeit, den Markdown-Inhalt direkt abzurufen. Wenn man den Markdown-Quelltext zuerst in HTML konvertiert, muss man von HTML zurückgehen, um die (einfacheren) Markdown-Inhalte zu erhalten. Zugegeben, vielleicht ist es mehr oder weniger eine 1:1-Zuordnung zwischen HTML und Markdown (obwohl, soweit ich gesehen habe, die meisten Markdown-Parser keine wirklichen Garantien dafür geben, wie die generierte HTML-Quelle aussieht, also kann ich das nicht verlassen Sie sich darauf), aber es fühlt sich immer noch "falsch" an, von Markdown zu HTML zu wechseln, wenn ich tatsächlich einen der Zwischenschritte auf dieser Route möchte.

Antworten (1)

Ich habe mittlerweile CommonMark.NET gefunden .

Es scheint zu tun, wonach ich suche, insbesondere erfüllt es die dritte Option, die ich in meiner Frage vorgeschlagen habe, indem es mir Zugriff auf den geparsten AST (abstrakter Syntaxbaum) gewährt.