Travailler avec Markdown en Kotlin : revue des bibliothèques et outils
Markdown est un langage de balisage populaire utilisé pour formater du texte dans la documentation, les blogs, les chats et les plateformes éducatives. Dans l'écosystème Kotlin, il existe plusieurs bibliothèques puissantes qui permettent d'analyser, générer et convertir du Markdown. Dans cet article, nous examinerons les principaux outils, leurs capacités et fournirons des exemples pratiques de code.
Pourquoi analyser le Markdown en Kotlin ?
Lors du développement de sites éducatifs, d'éditeurs de code, de systèmes de gestion de contenu ou d'applications de notes, il est souvent nécessaire de :
- Convertir du texte Markdown en HTML pour l'affichage sur des pages web
- Créer des éditeurs WYSIWYG avec support Markdown
- Analyser la structure du document (titres, listes, liens)
- Générer du balisage Markdown par programmation
Principales bibliothèques pour travailler avec Markdown en Kotlin
1. Flexmark (recommandée)
Flexmark est une bibliothèque haute performance pour l'analyse Markdown, écrite en Java et entièrement compatible avec Kotlin. Elle supporte CommonMark, GFM (GitHub Flavored Markdown) et de nombreuses extensions (tableaux, notes de bas de page, emojis, formules mathématiques).
Intégration via Gradle :
implementation("com.vladsch.flexmark:flexmark:0.64.8")implementation("com.vladsch.flexmark:flexmark-html2md-converter:0.64.8")Exemple de conversion Markdown en HTML :
import com.vladsch.flexmark.html.HtmlRendererimport com.vladsch.flexmark.parser.Parserimport com.vladsch.flexmark.util.data.MutableDataSet
fun main() { val options = MutableDataSet() val parser = Parser.builder(options).build() val renderer = HtmlRenderer.builder(options).build()
val markdown = """ # Bonjour, Kotlin ! Ceci est un **exemple** de travail avec *Markdown*. - Point 1 - Point 2 """.trimIndent()
val document = parser.parse(markdown) val html = renderer.render(document) println(html) // Sortie : <h1>Bonjour, Kotlin !</h1> // <p>Ceci est un <strong>exemple</strong> de travail avec <em>Markdown</em>.</p> // <ul><li>Point 1</li><li>Point 2</li></ul>}2. CommonMark-Java
CommonMark-Java est l'implémentation de référence de la spécification CommonMark. Légère, rapide, minimaliste. Elle convient si vous n'avez pas besoin des extensions GFM.
implementation("org.commonmark:commonmark:0.21.0")import org.commonmark.parser.Parserimport org.commonmark.renderer.html.HtmlRenderer
fun main() { val parser = Parser.builder().build() val renderer = HtmlRenderer.builder().build()
val markdown = "**Texte en gras** et *italique*" val document = parser.parse(markdown) val html = renderer.render(document) println(html) // <p><strong>Texte en gras</strong> et <em>italique</em></p>}3. KMarkdown (pour Kotlin Multiplatform)
KMarkdown est une bibliothèque Kotlin native, supportant Kotlin Multiplatform (JVM, JS, Native). Idéale pour les projets multiplateformes.
// build.gradle.ktsimplementation("com.github.cretz.kmarkdown:kmarkdown:0.2.0")import com.cretz.kmarkdown.KMarkdown
fun main() { val md = KMarkdown() val html = md.toHtml("# TitreTexte normal avec `code`") println(html) // <h1>Titre</h1><p>Texte normal avec <code>code</code></p>}Fonctionnalités avancées de Flexmark
Flexmark permet de configurer finement l'analyse et le rendu. Examinons quelques scénarios utiles.
Ajout d'extensions (tableaux, barré)
imp Aussi dans la bibliothèque
Envoi d'email en Go (Golang) : bibliothèques et exemples de code
Travailler avec Markdown en Java : bibliothèques, analyse et conversion
Travail avec Apache Kafka en C# (.NET) : bibliothèque Confluent.Kafka
golang-jwt Go : guide complet avec exemples | PythonLib