La Showdown est une marque JavaScript à HTML Converter, basée sur les œuvres originales de John Gruber. L'affichage peut être utilisé côté client (dans le navigateur) ou côté serveur (avec node.js).
Découvrez une démo en direct ici: http://demo.showdownjs.com/
Comme vous le savez, ShowdownJS est une bibliothèque gratuite et elle restera gratuite pour toujours. Cependant, le maintien et l'amélioration de la bibliothèque coûtent du temps et de l'argent.
Si vous aimez notre travail et trouvez notre bibliothèque utile, veuillez faire un don via PayPal! Votre contribution sera grandement appréciée et m'aidera à continuer à développer cette bibliothèque impressionnante.
ShowdownJS v 2.0 est publié sous la licence MIT. Les versions précédentes sont publiées sous BSD.
Vous pouvez télécharger la dernière version Tarball directement à partir des versions.
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Les forfaits NuGet peuvent être trouvés ici.
Vous pouvez également utiliser l'un des nombreux CDN disponibles:
jsdelivr
https://cdn.jsdelivr.net/npm/showdown@<version tag>/dist/showdown.min.js
CDNJ
https://cdnjs.cloudflare.com/ajax/libs/showdown/<version tag>/showdown.min.js
impermable
https://unpkg.com/showdown/dist/showdown.min.js
Remarque : Remplacez <version tag>
par une version réelle entièrement longueur que vous êtes intéressé par EG 1.9.0
La confrontation a été testée avec succès avec:
En théorie, la confrontation fonctionnera dans n'importe quel navigateur qui prend en charge l'ECMA 262 3e édition (JavaScript 1.5). Le convertisseur lui-même pourrait même fonctionner dans des choses qui ne sont pas des navigateurs Web, comme Acrobat. Pas de promesses.
Le Showdown est destiné à travailler sur n'importe quelle version prise en charge Node.js (voir le calendrier des versions Node.js. Le code peut fonctionner avec les versions précédentes de Node.js, mais aucune accès n'est fait pour s'assurer qu'il le fait.
Si vous recherchez une épreuve de force V <1,0.0, vous pouvez le trouver dans la branche héritée .
Vous pouvez vérifier le changelog complet
Vérifiez nos pages wiki pour des exemples et une documentation plus approfondie.
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 ) ;
Les deux exemples doivent sortir ...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
Vous pouvez modifier une partie du comportement par défaut de Showdown via des options.
Les options peuvent être définies:
La définition d'une option "globale" affecte toutes les instances de confrontation
showdown . setOption ( 'optionKey' , 'value' ) ;
La définition d'une option "locale" affecte uniquement l'objet de convertisseur spécifié. Les options locales peuvent être définies:
à travers le constructeur
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
via la méthode setOption ()
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
Showdown fournit 2 méthodes (locales et globales) pour récupérer les options de jeu précédentes.
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
Vous pouvez obtenir les options par défaut de Showdown avec:
var defaultOptions = showdown . getDefaultOptions ( ) ;
OmitextrawLinCodeBlocks : (Boolean) [par défaut Faux] Omettre la nouvelle ligne de la ligne dans un bloc de code. Ex:
Ce:
< code > < pre > var foo = 'bar';
</ pre > </ code >
Devient ceci:
< code > < pre > var foo = 'bar'; </ pre > </ code >
NoHeleDerid : (Boolean) [False par défaut] Désactivez la génération automatique d'ID d'en-tête. Le réglage sur True Overrides Prefixhederid
Persustalizedhederid : (booléen) [False par défaut] Utilisez du texte dans des accolades bouclées comme ID d'en-tête. (Depuis V1.7.0) Exemple:
## Sample header {real-id} will use real-id as id
GhCompatibleHeadErid : (booléen) [False par défaut] Générez des ID d'en-tête compatibles avec le style GitHub (les espaces sont remplacés par des tirets et un tas de caractères non alphanumériques sont supprimés) (depuis V1.5.5)
prefixhederid : (String / boolean) [par défaut false] Ajoutez un préfixe aux ID d'en-tête générés. Le passage d'une chaîne préfixera cette chaîne à l'ID d'en-tête. Le réglage sur true
ajoutera un préfixe générique «section».
RawPrefixHeleDiD : (Boolean) [False par défaut] La définition de cette option sur TRUE empêchera Showdown de modifier le préfixe. Cela peut entraîner des ID mal formulés (si, par exemple, le "char est utilisé dans le préfixe). N'a aucun effet si Prefixhederid est défini sur false. (Depuis V 1.7.3)
Rawhederid : (booléen) [False par défaut] Supprimer uniquement les espaces, 'et "des ID d'en-tête générés (y compris les préfixes), en les remplaçant par des tirets (-). Avertissement: Cela peut entraîner des ID mal formés (depuis V1.7.3)
HeaderLevelStart : (entier) [Par défaut 1] Définissez le niveau de départ de l'en-tête. Par exemple, le définir sur 3 signifie que
# foo
sera analysé comme
< h3 > foo </ h3 >
ParseImgDimensions : (Boolean) [False par défaut] Activer la prise en charge de la définition des dimensions d'image à partir de la syntaxe de Markdown. Exemples:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimplifiedAutolink : (Boolean) [False par défaut] L'activation de cette option permettra une liaison automatique aux URL. Cela signifie que:
some text www.google.com
sera analysé comme
< p > some text < a href =" www.google.com " > www.google.com </ a >
Exclusion-functuation de Fromurls : (booléen) [False par défaut] Cette option exclut la ponctuation de fuite des URL AutoLanking. Ponctuation exclue : . ! ? ( )
. Ne s'applique que si l'option SimplifiedAutolink est définie sur true
.
litteralmidwordonderscores : (booléen) [par défaut faux] L'activation de cela empêchera la confrontation d'interpréter les soulignements au milieu des mots comme <em>
et <strong>
et les traitent à la place comme des soulignements littéraux.
Exemple:
some text with __ underscores __ in middle
sera analysé comme
< p > some text with__underscores__in middle </ p >
litteralmidwordasterisks : (booléen) [Par défaut Faux] Activer cela empêcher la confrontation d'interpréter les astérisques au milieu des mots comme <em>
et <strong>
et les traitent plutôt comme des astérisques littéraux.
strikethrough : (booléen) [par défaut false] Activer la prise en charge de la syntaxe de Strikethrough. ~~strikethrough~~
As <del>strikethrough</del>
Tables : (Boolean) [False par défaut] Activer la prise en charge de la syntaxe des tables. Exemple:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
Voir le wiki pour plus d'informations
TRABSESHEADERID : (Boolean) [False par défaut] Si activé, ajoute une propriété ID aux balises d'en-têtes de table.
ghcodeblocks : (boolean) [par défaut true] Activer la prise en charge du style de bloc de code GFM.
TaskLists : (Boolean) [par défaut Faux] Activer la prise en charge des tasses GFM. Exemple:
- [x] This task is done
- [ ] This is still pending
SmoothLivePreview : (Boolean) [False par défaut] Empêche les effets étranges dans les aperçus en direct dus à une entrée incomplète
SmartIndentationFix : (Boolean) [par défaut Faux] essaie de résoudre intelligemment les problèmes d'indentation liés aux chaînes de modèle ES6 au milieu du code en retrait.
DisableForced4spaces Indendendente publiistes : (booléen) [False par défaut] désactive l'exigence d'indentation des sublilistes par 4 espaces pour qu'ils soient imbriqués, revenant effectivement à l'ancien comportement où 2 ou 3 espaces étaient suffisants. (Depuis V1.5.0)
Simplelinebreaks : (Boolean) [False par défaut] La ligne des parses se casse comme <br>
, sans avoir besoin de 2 espaces à la fin de la ligne (puisque v1.5.1)
a line
wrapped in two
se transforme en:
< p > a line < br >
wrapped in two </ p >
BesoinSPaceBeforeHeadingText : (Boolean) [par défaut Faux] rend l'ajout d'un espace entre #
et le texte de l'en-tête obligatoire (puisque V1.5.3)
ghmentions : (booléen) [par défaut false] Active GitHub @Ementions, qui est lié au nom d'utilisateur mentionné (depuis v1.6.0)
ghmentionsLink : (String) [par défaut https://github.com/{u}
] modifie le lien généré par @Mections. La confrontation remplacera {u}
par le nom d'utilisateur. Ne s'applique que si l'option Ghmentions est activée. Exemple: @tivie
avec ghmentionsOptions set sur //mysite.com/{u}/profile
entraînera <a href="//mysite.com/tivie/profile">@tivie</a>
EncodeEmails : (Boolean) [par défaut True] Activer les adresses e-mail codant pour l'utilisation d'entités de caractères, transformant les adresses e-mail ASCII en ses entités décimales équivalentes. (Depuis V1.6.1)
Remarque: Avant la version 1.6.1, les e-mails seraient toujours obscurcis grâce à l'encodage DEC et HEX.
OpenLinkSinnewwindow : (booléen) [False par défaut] Ouvrez tous les liens de New Windows (en ajoutant l'attribut target="_blank"
à <a>
Tags) (depuis V1.7.0)
BackSlashEscapeshtmlTags : (boolean) [False par défaut] Prise en charge de la balise HTML s'échapper. ex: <div>foo</div>
(depuis v1.7.2)
emoji : (boolean) [par défaut false] Activer la prise en charge des emoji. Ex: this is a :smile: emoji
pour plus d'informations sur les emojis disponibles, voir https://github.com/showdownjs/showdown/wiki/emojis (depuis V.1.8.0)
sous-estimé : (booléen) [False par défaut] La fonctionnalité expérimentale permettent la prise en charge de souligner. La syntaxe est en double ou triple soulignement Ex: __underlined word__
. Avec cette option activée, les soulignements ne sont plus d'analyses dans <em>
et <strong>
.
EllipSis : (Boolean) [Default True] remplace trois points par le caractère ellipsis Unicode.
CompleteHTMLDocument : (Boolean) [False par défaut] produit un document HTML complet, y compris <html>
, <head>
et <body>
tags 'au lieu d'un fragment HTML. (Depuis V.1.8.5)
métadonnées : (booléen) [False par défaut] Activer la prise en charge des métadonnées de document (définies en haut du document entre «««
et »»»
ou entre ---
et ---
). (Depuis 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) [False par défaut] Blocs de blocs adjacents divisés. (Depuis V.1.8.6)
Morestyling : (booléen) [Par défaut Faux] Ajoute des classes utiles pour le style CSS. (Depuis v2.0.1)
task-list-item-complete
aux éléments de tâches terminés dans les tasks GFM.Remarque : veuillez noter que jusqu'à la version 1.6.0 , toutes ces options sont désactivées par défaut dans l'outil CLI.
Vous pouvez également utiliser des saveurs ou des préréglages pour définir automatiquement les options correctes, de sorte que l'épreuve de force se comporte comme des saveurs de Markdown populaires.
Actuellement, les saveurs suivantes sont disponibles:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
La confrontation est également livrée avec un outil d'interface de ligne de commande. Vous pouvez consulter la page CLI Wiki pour plus d'informations
Le projet ShowdownJS fournit également une intégration de manière transparente avec AngularJS via un "plugin". Veuillez visiter https://github.com/showdownjs/ngshowdown pour plus d'informations.
Si vous utilisez TypeScript, vous souhaitez peut-être utiliser les types de définitivement
L'intégration avec SystemJS peut être obtenue via le plugin "System-MD" tiers.
Pour utiliser rapidement ShowdownJS en tant que composant VUE, vous pouvez vérifier Vue-Showdown.
L'approvisionnement ne désinfecte pas l'entrée. Ceci est par conception, car Markdown s'appuie sur lui pour permettre à certaines fonctionnalités d'être correctement analysées en HTML. Cela signifie cependant que l'injection XSS est tout à fait possible.
Veuillez vous référer à la vulnérabilité XSS de l'article Wiki (et comment les atténuer) pour plus d'informations.
La confrontation permet de charger des fonctionnalités supplémentaires via des extensions. (Vous pouvez trouver une liste des extensions d'épreuve connues ici) Vous pouvez également trouver un passe-partout pour créer vos propres extensions dans ce référentiel
< 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' ] } ) ;
Construire votre clone du référentiel est facile.
PRÉRECESITE: Node.js V12, NPM et NPX doivent être installés.
Exécutez npm install
.
Exécutez npx grunt build
(voir Gruntfile.js
). Cette commande:
dist
. Une suite de tests est disponible qui nécessite Node.js. Une fois le nœud installé, exécutez la commande suivante à partir de la racine du projet pour installer les dépendances:
npm install
Une fois installé, les tests peuvent être exécutés à partir de la racine du projet en utilisant:
npm test
De nouveaux cas de test peuvent facilement être ajoutés. Créez un fichier Markdown (se terminant par .md
) qui contient la marque pour tester. Créez un fichier .html
du même nom exactement. Il sera automatiquement testé lorsque les tests seront exécutés avec mocha
.
Si vous souhaitez contribuer, veuillez lire le guide rapide suivant.
Vous pouvez demander une nouvelle fonctionnalité en soumettant un problème. Si vous souhaitez implémenter une nouvelle fonctionnalité, n'hésitez pas à publier une demande de traction.
Les PR sont géniaux. Cependant, avant de soumettre votre demande de traction, considérez les directives suivantes:
Recherchez GitHub une demande de traction ouverte ou fermée concernant votre soumission. Vous ne voulez pas dupliquer les efforts.
Lorsque vous émettez des RP qui modifient le code, apportez vos modifications à une nouvelle branche GIT basée sur le développement :
git checkout -b my-fix-branch develop
Exécutez la suite de test complète avant de soumettre et assurez-vous que tous les tests passent (évidemment = p).
Essayez de suivre nos règles de style de codage . Les casser empêche le PR de passer les tests.
Évitez de résoudre plusieurs problèmes dans la même demande de traction. Il est préférable d'ouvrir plusieurs petits PR au lieu d'un dur à revoir Big One.
Si le PR présente une nouvelle fonctionnalité ou résout un problème, veuillez ajouter le cas de test approprié .
Nous utilisons des notes de validation conventionnelles pour générer le Changelog qui suivent la spécification conventionnelle du changeLog. Il est extrêmement utile si vos messages de validation adhèrent à ces directives de validation.
N'oubliez pas d'ajouter votre nom au fichier crédits.md. Nous aimons donner le crédit était dû.
Si nous suggérons des modifications alors:
git rebase develop -i
git push origin my-fix-branch -f
Une fois votre demande de traction fusionnée, vous pouvez supprimer votre succursale en toute sécurité.
Si vous avez le temps de contribuer à ce projet, nous nous sentons obligés d'obtenir le crédit pour cela. Ces règles nous permettent de revoir votre RP plus rapidement et vous donneront un crédit approprié dans votre profil GitHub. Nous vous remercions d'avance pour votre contribution!
Nous recherchons des membres pour aider à maintenir l'épreuve de force. Veuillez consulter ce problème pour exprimer son intérêt ou commenter cette note.
Liste complète de crédit sur https://github.com/showdownjs/showdown/blob/master/credits.md
La confrontation est alimentée par: