Architecture
Vue d’ensemble des modules
leaf est ecrit en Rust (Edition 2021) et organise en ces modules :
| Module | Responsabilite |
|---|---|
main.rs | Parsing CLI, gestion des entrees, configuration TUI |
cli.rs | Definitions des arguments en ligne de commande |
config.rs | Lecture du fichier de configuration |
app/ | Etat de l’application (document, TOC, recherche, pickers) |
markdown/ | Parsing, rendu, LaTeX, Mermaid, tableaux, extraction TOC |
render/ | Mise en page TUI avec ratatui |
runtime.rs | Boucle d’evenements, gestion clavier/souris |
theme.rs | Presets de themes et definitions de couleurs |
editor.rs | Detection et lancement de l’editeur |
terminal.rs | Cycle de vie du mode terminal brut |
update.rs | Mise a jour automatique avec verification SHA256 |
Dependances principales
- ratatui — framework d’interface terminal
- crossterm — gestion multi-plateforme du terminal
- pulldown-cmark — parsing Markdown
- syntect — coloration syntaxique
- mmdflux — rendu de diagrammes Mermaid
- unicodeit — conversion LaTeX vers Unicode
Boucle d’evenements
La boucle d’evenements principale dans runtime.rs tourne a environ 20 FPS (ticks de 50ms) :
- Interroger le chargement asynchrone du file picker
- Verifier les modifications de fichier (mode watch)
- Gerer les entrees clavier/souris
- Redessiner l’interface TUI
- Gerer le redimensionnement du terminal
Compilation
cargo build --release
cargo test