Traitement Markdown en Swift pour iOS et macOS : bibliothèques et exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Markdown en Swift (iOS/macOS) : bibliothèques et exemples pratiques



Markdown est un langage de balisage léger, largement utilisé pour formater du texte dans la documentation, les chats et les applications éducatives. Dans l'écosystème Swift (iOS/macOS), il existe plusieurs bibliothèques matures qui permettent d'analyser, de rendre et de convertir le Markdown en vues natives. Dans cet article, nous examinerons les principaux outils : Down, Ink et SwiftMarkdown, et montrerons des exemples d'intégration dans SwiftUI et UIKit.



1. Bibliothèque Down (basée sur cmark)



Down est la bibliothèque la plus populaire pour travailler avec Markdown en Swift. Elle est basée sur l'analyseur C haute performance cmark et prend en charge la norme CommonMark. Down permet de convertir le Markdown en HTML, NSAttributedString, PDF et même en AST (arbre syntaxique abstrait).



Installation

Ajoutez dans Package.swift :

dependencies: [    .package(url: "https://github.com/johnxnguyen/Down.git", from: "0.9.4")]


Exemple : rendu Markdown en NSAttributedString

import Down

let markdownString = "# Titre

Ceci est du texte **gras** et *italique*."let down = Down(markdownString: markdownString)

do { let attributedString = try down.toAttributedString() // Utilisez dans UITextView ou UILabel textView.attributedText = attributedString} catch { print("Erreur d'analyse : \\(error)")}


Down prend également en charge les styles personnalisés via DownStyler :

let styler = DownStyler(configuration: DownStylerConfiguration(    fonts: FontCollection(        heading1: .boldSystemFont(ofSize: 24),        body: .systemFont(ofSize: 16)    ),    colors: ColorCollection(        heading1: .systemBlue,        body: .label    )))let attributedString = try down.toAttributedString(styler: styler)


2. Bibliothèque Ink (John Sundell)



Ink est un analyseur Markdown léger de l'auteur John Sundell. Il ne nécessite pas de dépendances externes (Swift pur) et est idéal pour les tâches simples : extraction de titres, listes, liens. Ink renvoie un arbre de blocs (éléments de niveau bloc) qui peut être personnalisé.



Installation via Swift Package Manager

dependencies: [    .package(url: "https://github.com/JohnSundell/Ink.git", from: "0.6.0")]


Exemple : analyse et extraction de titres

import Ink

let markdown = """# Titre principal## Sous-titreTexte normal avec mise en évidence **gras**."""

let parser = MarkdownParser()let result = parser.parse(markdown)

for heading in result.headings { print("Niveau \\(heading.level) : \\(heading.text)")}// Sortie :// Niveau 1 : Titre principal// Niveau 2 : Sous-titre


Ink prend également en charge les modificateurs personnalisés pour étendre la syntaxe :

let modifier = Modifier(target: .inlineCode) { html, markdown in    return "<span style=\\"color: red;\\">\\(html)</span>"}let parser = MarkdownParser(modifiers: [modifier])


3. SwiftMarkdown (par Apple)



SwiftMarkdown est la bibliothèque officielle d'Apple, présentée à la WWDC 2022. Elle est profondément intégrée à l'écosystème SwiftUI et prend en charge toutes les extensions Markdown, y compris les tableaux, les blocs de code avec coloration syntaxique et les listes imbriquées. SwiftMarkdown utilise AttributedString de Foundation, ce qui simplifie la localisation et les polices dynamiques.



Installation

Ajoutez au projet via Xcode : File → Add Packages → apple/swift-markdown.



Exemple : affichage Markdown dans SwiftUI

import MarkdownUIimport SwiftUI

struct ContentView: View { let markdown = """ # Bienvenue Ceci est un **exemple** d'utilisat

Recommendations