Commonmark to HTML Prozessor
Commonmark ist der Versuch einen präzisen Standard für die verbeitete aber nur informell spezifizierte Markown-Syntax zu definieren. Markdown wird gerne verwendet um strukturierte Dokumente in einer les- und schreibbaren Plaintext-Syntax zu verfassen.
Ziel dieser Arbeit ist die Konzeption und Entwicklung eines Compilers, der Dokumente in erweiterter Commonmark-Syntax liest, und auf der Basis von Template-Ersetzungen in HTML-Dokumente umwandelt. Das System soll als Bibliothek entworfen werden, die in eine Anwendung eingebettet werden kann. Folgende Anforderungen sollen dabei erfüllt werden:
- Zur Implementierung wird die Rust Programmiersprache verwendet.
- Die Commonmark-Syntax wir um gebräuchliche Mechanismen aus anderen Markdown-Dialekten (z.B. Pandoc, GFM) erweitert, insbesondere auch zu Anreicherung des Quelltext mit Meta-Daten.
- Der Compiler ezeugt zunächst einen abstrakten SyntaxBaum (AST), der dann transformiert werden kann, bevor er in das Zielformat serialisiert wird. Zielfformate sind HTML, Plaintext, und (erweitertes) Commonmark selbst.
- Transformation und Umwandlung des AST erfolgt mit einem rekursiven System aus Selektoren und Templates. Für die Selektion, die Definition und die Anwendung der Templates sind geeignete Mechanismen zu entwickeln, bzw. zu adaptieren.
- Der Compiler kann als Language-Server betrieben werden, der mit geeigneten Text-Editoren über das Language-Server-Protokoll kommuniziert, um Navigation, Vervollständigung, Formatierung und Linting zu unterstützen.
- Der Compiler unterstützt eine zeichengenaue bidirektionale Zuordnung von Commonmark Quelltext zu HTML-Output.
- Der Compiler unterstützt differentielle Übersetzung von geänderten Dokumentfragmenten und die Übertragung der Ergebnisfragmente über geeignete Kommunikationskanäle zu interaktiven Anzeigeprogrammen.
- Die Entwicklung erfolgt quelloffen auf GitHub.
- Die Bibliothek wird auf crate.io veröffentlicht und auf docs.rs vollständig dokumentiert.
- Nachvollziehbares Release-Schema, dokumentierte Releases mit Change-Log und ordentliche Commit-Policy.
- Vernünftige Testabdeckung aller wesentlichen Funktionen.
Der entstehende Markdown-Compiler soll Teil einer Neuentwicklung des experimentellen Präsentations-Compilers Decker werden. Decker wird an mehreren Hochschulen zur Erstellung von Lehrmaterialien verwendet (an der BHT: CGG, PLC).
Links: