markdown v0.1.0
Markdown module for YScript, backed by Markdig
yes.exe ypack install markdown@0.1.0
| Auteur | Yan Grenier |
| Publié le | 2026-08-15T13:58:25+00:00 |
| Checksum | sha256:533b4dde69996f34ab4e0ac642c620701feec082d42ea6c851a32d31f27db5d9 |
| Moteur requis |
yscript >=0.5.0 |
| Fournit | module |
Dépendances
Aucune dépendance.
Téléchargement
Archive .zip de la version 0.1.0
Historique des versions
| Version | Date |
|---|---|
| 0.1.0 (dernière) | 2026-08-15T13:58:25+00:00 |
Documentation
Module markdown
Le module markdown convertit du texte markdown en HTML, en texte brut, ou vers un markdown normalisé, en s'appuyant sur Markdig, une bibliothèque .NET conforme CommonMark avec un riche jeu d'extensions optionnelles (tableaux, notes de bas de page, listes de tâches, etc.).
local markdown = require("markdown")
local html = markdown.tohtml("# Titre\n\nDu texte en **gras**.")
print(html)
--> <h1>Titre</h1>
--> <p>Du texte en <strong>gras</strong>.</p>
Vue d'ensemble
| Fonction | Description |
|---|---|
markdown.tohtml(text [, extensions]) | Convertit du markdown en HTML |
markdown.totext(text [, extensions]) | Convertit du markdown en texte brut (mise en forme retirée) |
markdown.normalize(text [, extensions]) | Réécrit du markdown sous une forme normalisée |
Les trois fonctions retournent une chaîne, et acceptent en argument 2 (optionnel) une chaîne d'extensions Markdig — voir « Extensions » ci-dessous. Sans argument 2, seul CommonMark de base est actif (pas de tableaux, pas de notes de bas de page, etc.).
markdown.tohtml(text [, extensions])
Convertit text (markdown) en HTML.
print(markdown.tohtml("Un lien : [YScript](https://example.com)."))
--> <p>Un lien : <a href="https://example.com">YScript</a>.</p>
print(markdown.tohtml("| a | b |\n|---|---|\n| 1 | 2 |", "pipetables"))
--> <table>...</table>
markdown.totext(text [, extensions])
Convertit text (markdown) en texte brut : la mise en forme (emphase, titres, liens, ...) est retirée, seul le contenu textuel est conservé.
print(markdown.totext("# Titre\n\nDu texte en **gras**, et un [lien](https://example.com)."))
--> Titre
--> Du texte en gras, et un lien.
markdown.normalize(text [, extensions])
Réécrit text (markdown) sous une forme normalisée (espacement et marqueurs d'emphase cohérents), sans passer par le HTML. Utile pour reformater un fichier .md de façon homogène.
print(markdown.normalize("Titre\n=====\n\n* item 1\n* item 2"))
--> # Titre
-->
--> * item 1
--> * item 2
Extensions
Par défaut, seul CommonMark (la spécification de base du markdown) est actif. Les extensions Markdig, désactivées par défaut, s'activent via l'argument extensions : une chaîne contenant un ou plusieurs noms d'extension séparés par +.
markdown.tohtml(text, "advanced") -- toutes les extensions "avancées" courantes
markdown.tohtml(text, "pipetables+autolinks") -- seulement celles-ci
* marque les extensions déjà incluses dans advanced — inutile de les combiner explicitement avec advanced, seulement pour les activer seules ou avec d'autres extensions hors advanced.
| Nom | Effet |
|---|---|
advanced | active d'un coup le jeu d'extensions "avancées" ci-dessous marquées * |
pipetables * | tableaux au format GitHub (| a | b |) |
gridtables * | tableaux au format "grid table" (bordures ASCII) |
footnotes * | notes de bas de page ([^1]) |
footers * | bloc de pied de document |
citations * | citations (""texte"") |
attributes * | attributs génériques sur les éléments ({#id .classe}) |
abbreviations * | abréviations (*[HTML]: HyperText Markup Language) |
emojis | émojis et smileys (:smile:, :-)) |
definitionlists * | listes de définitions |
customcontainers * | conteneurs personnalisés (::: nom ... :::) |
figures * | figures avec légende |
mathematics * | formules mathématiques ($...$, $$...$$) |
bootstrap | classes CSS Bootstrap sur certains éléments générés |
medialinks * | liens vers médias (audio/vidéo/iframe) rendus en balises adaptées |
smartypants | remplacement typographique (guillemets, tirets, points de suspension) |
autoidentifiers * | identifiants générés automatiquement sur les titres (ancre #titre) |
tasklists * | listes de tâches (- [ ], - [x]) |
diagrams * | blocs de diagrammes (mermaid, nomnoml) |
nofollowlinks | ajoute rel="nofollow" aux liens générés |
noopenerlinks | ajoute rel="noopener" aux liens générés |
noreferrerlinks | ajoute rel="noreferrer" aux liens générés |
nohtml | désactive le HTML brut inclus dans le markdown source |
yaml | reconnaît (sans le rendre) un bloc d'en-tête YAML (---) |
autolinks * | détecte automatiquement les URLs/adresses email en texte brut |
emphasisextras * | marqueurs d'emphase supplémentaires (souligné, barré, ...) |
listextras * | numérotation de liste étendue (a., i., ...) |
hardlinebreak | un retour à la ligne simple produit un saut de ligne (<br>) |
alerts * | blocs d'alerte GitHub (> [!NOTE], > [!WARNING], ...) |
Un nom d'extension inconnu (typo, extension inexistante) fait lever une erreur script.
local ok, err = pcall(markdown.tohtml, text, "not-an-extension")
if not ok then
print("extensions invalides : " .. err)
end
Exemple complet
local markdown = require("markdown")
local doc = [[
# Notes
Une liste de tâches :
- [x] Écrire le module
- [ ] Écrire les tests
| Fonction | Fait |
|----------|------|
| tohtml | oui |
| totext | oui |
]]
print(markdown.tohtml(doc, "tasklists+pipetables"))
print(markdown.totext(doc))