Showdown ist ein JavaScript -Markdown zum HTML -Konverter, der auf den Originalwerken von John Gruber basiert. Showdown kann die Client -Seite (im Browser) oder die Serverseite (mit node.js) verwendet werden.
Schauen Sie sich hier eine Live -Demo an: http://demo.showdownjs.com/
Wie Sie wissen, ist Showdownjs eine kostenlose Bibliothek und wird für immer kostenlos bleiben. Die Aufrechterhaltung und Verbesserung der Bibliothek kostet jedoch Zeit und Geld.
Wenn Sie unsere Arbeit mögen und unsere Bibliothek nützlich finden, spenden Sie bitte über PayPal! Ihr Beitrag wird sehr geschätzt und helfen mir, diese großartige Bibliothek weiter zu entwickeln.
Showdownjs V 2.0 wird unter der MIT -Lizenz veröffentlicht. Frühere Versionen werden unter BSD veröffentlicht.
Sie können den neuesten Release -Tarball direkt von Veröffentlichungen herunterladen.
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Die Nuget -Pakete finden Sie hier.
Sie können auch eines von mehreren verfügbaren CDNs verwenden:
Jsdelivr
https://cdn.jsdelivr.net/npm/showdown@<version tag>/dist/showdown.min.js
CDNJS
https://cdnjs.cloudflare.com/ajax/libs/showdown/<version tag>/showdown.min.js
Unpkg
https://unpkg.com/showdown/dist/showdown.min.js
HINWEIS : Ersetzen Sie <version tag>
durch eine tatsächliche Version in voller Länge, an der Sie an z. B. 1.9.0
interessiert sind
Showdown wurde erfolgreich getestet mit:
Theoretisch wird Showdown in jedem Browser funktionieren, der die ECMA 262 3rd Edition (JavaScript 1.5) unterstützt. Der Konverter selbst kann sogar in Dingen funktionieren, die keine Webbrowser wie Acrobat sind. Keine Zusagen.
Showdown soll auf einer unterstützten Node.js -Version arbeiten (siehe Node.js veröffentlicht den Zeitplan. Der Code kann mit früheren Versionen von Node.js funktionieren, es werden jedoch keine Ausnahmen getroffen, um sicherzustellen, dass dies der Fall ist.
Wenn Sie nach Showdown V <1.0.0 suchen, finden Sie es in der Legacy -Filiale .
Sie können den vollständigen ChangeLog überprüfen
In unseren Wiki-Seiten finden Sie Beispiele und eine detailliertere Dokumentation.
var showdown = require ( 'showdown' ) ,
converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
var converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
Beide Beispiele sollten ausgeben ...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
Sie können einige der Standardverhalten von Showdown durch Optionen ändern.
Optionen können festgelegt werden:
Die Festlegung einer "globalen" Option wirkt sich auf alle Instanzen des Showdowns aus
showdown . setOption ( 'optionKey' , 'value' ) ;
Das Einstellen einer "lokalen" Option wirkt sich nur auf das angegebene Konverterobjekt aus. Lokale Optionen können festgelegt werden:
durch den Konstruktor
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
Durch die SetOption () -Methode
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
Showdown bietet 2 Methoden (sowohl lokal als auch global), um frühere festgelegte Optionen abzurufen.
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
Sie können die Standardoptionen von Showdown mit:
var defaultOptions = showdown . getDefaultOptions ( ) ;
OmiteExTrawlocoDeblocks : (boolean) [Standard False] Die nachfolgende Neue Leitung in einem Codeblock auslassen. Ex:
Das:
< code > < pre > var foo = 'bar';
</ pre > </ code >
Wird dies:
< code > < pre > var foo = 'bar'; </ pre > </ code >
NoheaderID : (boolean) [Standard Falsch] Deaktivieren Sie die automatische Generierung von Header -IDs. Einstellung auf True Overtides PrefixheaderID
CustomizedHeaderID : (boolean) [Standard Falsch] Verwenden Sie Text in lockigen Klammern als Header -ID. (Da v1.7.0) Beispiel:
## Sample header {real-id} will use real-id as id
GhCompatibleHeaderID : (boolean) [Standard False] Generieren Sie Header -IDs, die mit dem Github -Stil kompatibel sind (Räume werden durch Striche ersetzt und eine Reihe von nicht alphanumerischen Zeichen werden entfernt) (da V1.5.5)
PräfixheaderID : (String/Boolean) [Standard False] Fügen Sie den generierten Header -IDs ein Präfix hinzu. Wenn Sie eine Zeichenfolge übergeben, wird diese Zeichenfolge an der Header -ID vorangestellt. Die Einstellung zu true
fügt ein generisches Abschnitt "Abschnitt" hinzu.
RAWPREFIXHeaDerID : (Boolean) [Standard False] Setzen Sie diese Option auf True, verhindern, dass das Showdown das Präfix ändern. Dies kann zu missgebildeten IDs führen (wenn beispielsweise das "char im Präfix verwendet wird). Hat keine Wirkung, wenn das Präfixheaderid auf false gesetzt ist. (Da V 1.7.3)
RAWHeaDerID : (boolean) [Standard Falsch] Nur Leerzeichen entfernen "und" von generierten Header-IDs (einschließlich Präfixen), wobei sie durch Striche (-) ersetzt werden. WARNUNG: Dies kann zu fehlerhaften IDs führen (da V1.7.3)
HeaderLevelstart : (Ganzzahl) [Standard 1] Legen Sie den Header -Startniveau ein. Zum Beispiel bedeutet das Festlegen dieses auf 3
# foo
wird als analysiert als
< h3 > foo </ h3 >
Parseimgdimensions : (boolean) [Standard False] Unterstützung für die Festlegung von Bilddimensionen innerhalb der Markdown -Syntax. Beispiele:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimplifiedAutolink : (boolean) [Standard Falsch] Diese Option aktiviert die automatische Verknüpfung mit URLs. Das bedeutet, dass:
some text www.google.com
wird als analysiert als
< p > some text < a href =" www.google.com " > www.google.com </ a >
Ausschließungspunkte ausschließend ausschließlich : (boolean) [Standard False] Diese Option schließt die nachverfolgende Interpunktion aus Autolinking -URLs aus. Interpunktion ausgeschlossen : . ! ? ( )
. Gilt nur, wenn die Option SimplifiedAutolink auf true
eingestellt ist.
LiteralmidWordArterscores : (boolean) [Standard Falsch] Wenn Sie dies einschalten, können Sie den Showdown in der Mitte der Wörter als <em>
und <strong>
und stattdessen als wörtliche Unterstriche behandeln.
Beispiel:
some text with __ underscores __ in middle
wird als analysiert als
< p > some text with__underscores__in middle </ p >
literalmidwordasterisks : (boolean) [Standard Falsch] Wenn Sie dies einschalten, verhindern Sie, dass das Showdown in der Mitte der Wörter als <em>
und <strong>
und stattdessen als wörtliche Sternchen behandelt.
striftenhough : (boolean) [Standard False] Unterstützung für die Striickens -Syntax ermöglichen. ~~strikethrough~~
as <del>strikethrough</del>
Tabellen : (boolean) [Standard Falsch] Unterstützung für die Tabellensyntax aktivieren. Beispiel:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
Weitere Informationen finden Sie im Wiki
TablesHeaDerID : (boolean) [Standard False] Wenn aktiviert aktiviert ist, fügt die TABLE -Header -Tags eine ID -Eigenschaft hinzu.
GHCODEBLOCKS : (boolean) [Standard True] Unterstützung für den GFM -Code -Block -Stil aktivieren.
Tasklisten : (boolean) [Standard Falsch] Unterstützung für GFM -Tasklisten aktivieren. Beispiel:
- [x] This task is done
- [ ] This is still pending
SmoothLivePreview : (boolean) [Standard False] verhindert seltsame Effekte in Live -Vorschau aufgrund unvollständiger Eingaben
SmartIndentationFix : (boolean) [Standard False] versucht, Eindrückungsprobleme im Zusammenhang mit ES6 -Vorlagen -Zeichenfolgen inmitten des eingedrückten Codes intelligent zu beheben.
DisableFORCED4SPACESIDENTENTENTENTENSUBLIENS : (Boolean) [Standard False] deaktiviert die Anforderung, Unterschreiber durch 4 Leerzeichen einzubeziehen, damit sie verschachtelt sind und effektiv zu dem alten Verhalten zurückkehren, in dem 2 oder 3 Leerzeichen genug waren. (seit v1.5.0)
SimplelineBreaks : (boolean) [Standard False] Parse Line bricht als <br>
, ohne 2 Leerzeichen am Ende der Linie zu benötigen (da V1.5.1)
a line
wrapped in two
dreht sich in:::
< p > a line < br >
wrapped in two </ p >
fordersspaceBeforeHeaDeTText : (boolean) [Standard False] macht das Hinzufügen eines Leerzeichens zwischen #
und dem Header -Text obligatorisch (da V1.5.3)
ghmentions : (boolean) [Standard False] ermöglicht GitHub @mentions, die mit dem genannten Benutzernamen verknüpft sind (da V1.6.0)
ghentionsLink : (string) [Standard https://github.com/{u}
] ändert den von @mentions generierten Link. Showdown ersetzt {u}
durch den Benutzernamen. Gilt nur, wenn die Option Ghmentions aktiviert ist. Beispiel: @tivie
mit ghentionsoption auf //mysite.com/{u}/profile
<a href="//mysite.com/tivie/profile">@tivie</a>
uation
EncodeEmails : (boolean) [Standard True] Aktivieren Sie E-Mail-Adressen, die durch die Verwendung von Zeicheneinheiten codiert werden, wodurch die E-Mail-Adressen von ASCII in seine äquivalenten Dezimalunternehmen umgewandelt werden. (Da v1.6.1)
HINWEIS: Vor Version 1.6.1 würden E -Mails immer durch Dezember und Hex -Codierung verschleiert.
OpenLinkSinNewWindow : (boolean) [Standard Falsch] Öffnen Sie alle Links in neuen Fenstern (durch Hinzufügen des Attributs target="_blank"
zu <a>
Tags) (da v1.7.0)
Backslashescapeshtmltags : (boolean) [Standard Falsch] Unterstützung für das HTML -Tag entkommt. Ex: <div>foo</div>
(da v1.7.2)
Emoji : (boolean) [Standard False] Aktivieren Sie die Emoji -Unterstützung. Ex: this is a :smile: emoji
für weitere Informationen zu verfügbaren Emojis finden Sie unter https://github.com/showdownjs/showdown/wiki/emojis (seit V.1.8.0)
Unterstreichung : (Boolean) [Standard Falsch] Experimentelle Funktion ermöglichen die Unterstützung für Unterstreichung. Syntax ist doppelte oder dreifache Unterstriche ex: __underlined word__
. Mit dieser Option sind Unterstriche nicht mehr in <em>
und <strong>
Parsen.
Ellipsis : (boolean) [Standard True] ersetzt drei Punkte durch das Ellipsis Unicode -Zeichen.
completehtmldocument : (boolean) [Standard False] gibt ein vollständiges HTML -Dokument aus, einschließlich <html>
, <head>
und <body>
Tags anstelle eines HTML -Fragments. (seit V.1.8.5)
Metadaten : (boolean) [Standard falsch] Unterstützung für Dokumentmetadaten (definiert oben im Dokument zwischen «««
und »»»
oder zwischen ---
und ---
). (seit V.1.8.5)
var conv = new showdown . Converter ( { metadata : true } ) ;
var html = conv . makeHtml ( someMd ) ;
var metadata = conv . getMetadata ( ) ; // returns an object with the document metadata
splitadjacentblockquotes : (boolean) [Standard Falsch] Split benachbarte Blockquote -Blöcke. (Da V.1.8.6)
Morestyling : (boolean) [Standard Falsch] fügt einige nützliche Klassen für das CSS -Styling hinzu. (da v2.0.1)
task-list-item-complete
für ausgefüllte Aufgabenelemente in GFM-Tasklisten hinzu.Hinweis : Bitte beachten Sie, dass alle diese Optionen bis zu Version 1.6.0 standardmäßig im CLI -Tool deaktiviert sind.
Sie können auch Aromen oder Voreinstellungen verwenden, um die richtigen Optionen automatisch festzulegen, sodass Showdown sich wie beliebte Markdown -Aromen verhält.
Derzeit sind die folgenden Geschmacksrichtungen erhältlich:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
Showdown wird auch mit einem Befehlszeilen -Schnittstellen -Tool gebündelt. Sie können die CLI -Wiki -Seite für weitere Informationen überprüfen
Das Showdownjs -Projekt bietet auch eine nahtlose Integration mit AngularJS über ein "Plugin". Bitte besuchen Sie https://github.com/showdownjs/ngshowdown für weitere Informationen.
Wenn Sie TypeScript verwenden, möchten Sie möglicherweise die Typen von definitiven verwenden
Die Integration mit SystemJs kann über das "System-MD" -Plugin von Drittanbietern erhalten werden.
Um Showdownjs als Vue-Komponente schnell zu verwenden, können Sie Vue-Showdown überprüfen.
Showdown saniert nicht die Eingabe. Dies geschieht nach Design, da Markdown darauf abhängt, dass bestimmte Funktionen korrekt in HTML analysiert werden. Dies bedeutet jedoch, dass die XSS -Injektion durchaus möglich ist.
Weitere Informationen finden Sie in der XSS -Sicherheitsanfälligkeit des Wiki -Artikels.
Mit Showdown können zusätzliche Funktionen über Erweiterungen geladen werden. (Hier finden Sie eine Liste bekannter Showdown -Erweiterungen.)
< script src = "showdown.js" / >
< script src = "twitter-extension.js" / >
var converter = new showdown . Converter ( { extensions : [ 'twitter' ] } ) ;
var showdown = require ( 'showdown' ) ,
myExtension = require ( 'myExtension' ) ,
converter = new showdown . Converter ( { extensions : [ 'myExtension' ] } ) ;
Der Aufbau Ihres Klons des Repositorys ist einfach.
Voraussetzungen: Node.js v12, NPM und NPX müssen installiert werden.
Führen Sie npm install
aus.
Rennen Sie npx grunt build
(siehe Gruntfile.js
). Dieser Befehl:
dist
-Ordner. Eine Reihe von Tests ist verfügbar, für die Node.js. Wenn der Knoten installiert ist, führen Sie den folgenden Befehl aus dem Projektstamm aus, um die Abhängigkeiten zu installieren:
npm install
Sobald die Installation installiert wurde, können die Tests mithilfe von der Projektramme aus durchgeführt werden:
npm test
Neue Testfälle können leicht hinzugefügt werden. Erstellen Sie eine Markdown -Datei (enden in .md
), die den zu testenden Markdown enthält. Erstellen Sie eine .html
-Datei mit genauem Namen. Es wird automatisch getestet, wenn die Tests mit mocha
ausgeführt werden.
Wenn Sie einen Beitrag leisten möchten, lesen Sie bitte den folgenden Schnellhandbuch.
Sie können eine neue Funktion anfordern, indem Sie ein Problem senden. Wenn Sie eine neue Funktion implementieren möchten, können Sie eine Pull -Anfrage gerne ausstellen.
PRs sind großartig. Bevor Sie jedoch Ihre Pull -Anfrage einreichen, berücksichtigen Sie die folgenden Richtlinien:
Suchen Sie GitHub nach einer offenen oder geschlossenen Pull -Anfrage, die sich auf Ihre Einreichung bezieht. Sie möchten keine Anstrengungen duplizieren.
Nehmen Sie bei der Ausgabe von PRs, die den Code ändern, Ihre Änderungen in einer neuen Git -Filiale basierend auf entwickeln vor:
git checkout -b my-fix-branch develop
Führen Sie die vollständige Testsuite vor dem Einreichen aus und stellen Sie sicher, dass alle Tests bestehen (offensichtlich = p).
Versuchen Sie, unsere Codierungsstilregeln zu befolgen. Das Brechen verhindert, dass die PR die Tests bestehen.
Legen Sie nicht in derselben Pull -Anfrage an. Es ist vorzuziehen, mehrere kleine PRs anstelle einer schwer zu überprüfen, um Big zu überprüfen.
Wenn die PR eine neue Funktion einführt oder ein Problem behebt, fügen Sie bitte den entsprechenden Testfall hinzu .
Wir verwenden herkömmliche Commit -Notizen, um den ChangeLog zu generieren, der der konventionellen ChangeLog -Spezifikation folgt. Es ist äußerst hilfreich, wenn Ihre Commit -Nachrichten diese Commit -Richtlinien einhalten.
Vergessen Sie nicht, Ihren Namen der Datei credits.md hinzuzufügen. Wir geben gerne Anerkennung, wenn es fällig ist.
Wenn wir Änderungen vorschlagen, dann:
git rebase develop -i
git push origin my-fix-branch -f
Nachdem Ihre Pull -Anfrage zusammengeführt wurde, können Sie Ihre Filiale sicher löschen.
Wenn Sie Zeit haben, zu diesem Projekt beizutragen, fühlen wir uns verpflichtet, dass Sie es zuschreiben. Diese Regeln ermöglichen es uns, Ihre PR schneller zu überprüfen und Ihnen in Ihrem GitHub -Profil eine angemessene Anerkennung zu geben. Wir danken Ihnen im Voraus für Ihren Beitrag!
Wir suchen Mitglieder, um den Showdown aufrechtzuerhalten. Bitte beachten Sie dieses Problem, um das Interesse oder einen Kommentar zu diesem Hinweis zum Ausdruck zu bringen.
Vollständige Kreditliste unter https://github.com/showdownjs/showdown/blob/master/credits.md
Showdown wird angetrieben von: