feat(rich): RichBlock parser + FxWidget (#36) #122

Merged
charles merged 3 commits from feat/36-fractal-rich into main 2026-04-06 02:14:29 +00:00
Owner

Résumé

Implémentation du crate fractal-rich pour le rendu structuré des messages.

  • RichBlock enum : Text, Heading, Code, Quote, List, Rule, Widget, Fallback
  • FxWidget enum : Card, Chart, Carousel, Progress, Quiz, TableSort, Accordion, Timeline, Canvas, Math, Mermaid, CodeRun, Unknown
  • RenderLevel : PlainText, Standard, Rich
  • RichParser::parse(html) -> Vec<RichBlock> — parse HTML → blocs structurés
  • Gestion des widgets fx-* personnalisés
  • 6 tests unitaires

Closes #36

Plan de test

  • cargo test -p fractal-rich passe sans erreur
  • RichParser::parse("<h1>Titre</h1>") retourne [Heading { level: 1, text: "Titre" }]
  • Les widgets fx-math, fx-mermaid, fx-card, fx-code-run sont correctement typés
## Résumé Implémentation du crate `fractal-rich` pour le rendu structuré des messages. - `RichBlock` enum : `Text`, `Heading`, `Code`, `Quote`, `List`, `Rule`, `Widget`, `Fallback` - `FxWidget` enum : `Card`, `Chart`, `Carousel`, `Progress`, `Quiz`, `TableSort`, `Accordion`, `Timeline`, `Canvas`, `Math`, `Mermaid`, `CodeRun`, `Unknown` - `RenderLevel` : `PlainText`, `Standard`, `Rich` - `RichParser::parse(html) -> Vec<RichBlock>` — parse HTML → blocs structurés - Gestion des widgets `fx-*` personnalisés - 6 tests unitaires Closes #36 ## Plan de test - [ ] `cargo test -p fractal-rich` passe sans erreur - [ ] `RichParser::parse("<h1>Titre</h1>")` retourne `[Heading { level: 1, text: "Titre" }]` - [ ] Les widgets `fx-math`, `fx-mermaid`, `fx-card`, `fx-code-run` sont correctement typés
feat(rich): expose block and parser modules
Some checks failed
CI / cargo check (pull_request) Has been cancelled
CI / cargo test (pull_request) Has been cancelled
CI / clippy + rustfmt (pull_request) Has been cancelled
6a77d0bc0e
Sign in to join this conversation.
No description provided.