HTML-zu-Markdown-JavaScript-Konverter

Suche nach einer JavaScript-Bibliothek, die HTML-Code in das Markdown-Format konvertieren soll.

Es sollte folgende Eigenschaften haben:

  • einfache HTML-Tags in Markdown umwandeln ( h1...6, pre, codeetc)
  • Behalten Sie den HTML-Code bei, wenn er keinen Korrespondenten in Markdown hat (z. B. iframe)
  • Arbeit auf Serverseite (NodeJS)
  • Clientseitig arbeiten (Browser)

Die ersten drei Punkte sind wichtig für mich, aber alle Empfehlungen/Vorschläge sind willkommen.


Beispiele

HTML                                    | Converted
----------------------------------------+---------------------------------
<h1>Hello World</h1>                    | # Hello World
----------------------------------------+---------------------------------
<h1 class="foo">Hello World</h1>        | <h1 class="foo">Hello World</h1>
----------------------------------------+---------------------------------
<p>Lorem ipsum</p>                      | Lorem ipsum
----------------------------------------+---------------------------------
<p data-something="foo">Lorem ipsum</p> | <p data-something="foo">Lorem ipsum</p>
----------------------------------------+---------------------------------
<img src="something">                   | ![](something)
----------------------------------------+---------------------------------
<a href="...">foo</a>                   | [foo](...)
----------------------------------------+---------------------------------
<a disabled="" href="...">foo</a>       | <a disabled="" href="...">foo</a>
Wären Sie an einer rein serverseitigen Option interessiert? Ich kenne keine, die beide oder nur browserseitig sind, aber ich kenne eine, die serverseitig ist.
@NickWilde Das wäre perfekt. Wenn es auf der Serverseite funktioniert, sollte es auch auf der Clientseite funktionieren. Vielen Dank!
Ich würde das To -Markdown auf Github empfehlen. > Ein in JavaScript geschriebener HTML-zu-Markdown-Konverter

Antworten (1)

Normalerweise mag ich Pandoc wirklich für alle meine Anforderungen an die Konvertierung von Textformaten. Es basiert jedoch auf Haskell - obwohl es für die meisten Betriebssysteme einfache Installations-/Ausführungsoptionen bietet. Natürlich lässt es sich nicht so gut über JavaScript ausführen - Sicher kann man mit Node.js und Streams etwas ausarbeiten; aber warum sich die Mühe machen, wenn es schon erledigt ist: Jandoc .

Jandoc macht alles, was Pandoc macht, aber mit (Node.js) JavaScript-Wrappern.

Die Installation ist etwas kompliziert;

  1. Installieren Sie Node.js
  2. Installieren Sie die Haskell-Plattform .
  3. Führen Sie die cmd-Eingabeaufforderung aus und führen Sie cabal updatesie aus (das aktualisiert nicht Cabal, sondern nur die Paketquellliste, um Cabal zu aktualisieren (falls gewünscht/erforderlich) run cabal install cabal-install)
  4. cmd prompt: cabal install pandoc(Es wird eine Weile dauern)
  5. cmd-Eingabeaufforderung:npm install jandoc -g

API-Informationen finden Sie in der Jandoc Readme .

Um Ihre Anforderungen durchzugehen:

  • einfache HTML-Tags in Markdown umwandeln (h1...6, pre, code usw.): Ja
  • Behalten Sie den HTML-Code bei, wenn er keinen Korrespondenten in Markdown hat (z. B. iframe): Ja - wenn Sie die Option -R/--parse-raw verwenden . Für Jandoc über die JavaScript-API würden Sie also einfach ein parseRaw: TrueArgument in Ihre Optionsliste aufnehmen.
  • Arbeit auf Serverseite (Node.JS): Ja
  • Arbeit auf der Client-Seite (Browser): NEIN. Auch nicht einfach auf die Browsernutzung übertragbar.
Man könnte möglicherweise den Haste-Compiler verwenden , um von Haskell nach ECMAScript zu konvertieren, aber ich bezweifle, dass diese Aufgabe einfach sein wird.
Ja, ich bin sicher, es könnte getan werden, aber ehrlich gesagt, um nur html->md zu unterstützen, wäre es viel einfacher, es mit ein paar Regexp-Ersetzungen von Grund auf neu zu machen.
Hey Nick, danke für die Antwort. Ich werde es bald überprüfen, aber ich bin mit den Abiturprüfungen beschäftigt.
@NickWilde Wenn das mit einigen einfachen regulären Ausdrücken möglich ist, würde ich diesen Weg wählen. Ich teste den Haskell-Weg.