Marijn Haverbeke est un développeur que j’apprécie beaucoup. Ses projets sont pour la plupart écrits en JavaScript, langage que j’apprécie habituellement que moyennement, mais la qualité de son code le rend plaisant à lire. Et c’est toujours très bien documenté ! Comme ses travaux n’ont pas encore eu beaucoup d’échos sur LinuxFr.org, je me propose de vous les présenter.
Commençons par Eloquent JavaScript. C’est un ouvrage, dont la version en ligne est gratuite, qui enseigne le JavaScript. Il est régulièrement cité comme étant ce qui se fait de mieux pour les débutants qui veulent apprendre le JS.
ProseMirror est une boîte à outils pour construire des éditeurs Web de texte riche. En particulier, il inclut les fondations permettant de faire de l’édition collaborative. J’ai découvert ce projet lors du développement de cozy-notes (cf. la dépêche des nouvelles de Cozy) et j’ai été impressionné par la qualité : les concepts de base sont bien expliqués, le code est modulaire et bien organisé, on sent une grande maîtrise du sujet, aussi bien sur les manipulations du DOM dans le navigateur que sur les aspects algorithmiques pour l’intégration automatique des changements lors de l’édition collaborative.
CodeMirror est le pendant de ProseMirror pour le code : c’est un éditeur de code en ligne, avec coloration syntaxique, thèmes, auto‐complétion, recherche, intégration d’outils de « lint », etc. Il est utilisé par les outils de développement de votre navigateur et par beaucoup d’autres projets.
En parlant de CodeMirror, la version actuelle est la 5 et la version 6, en cours de développement, sera une réécriture complète. Parmi les nouveautés, il y aura une meilleure accessibilité, une prise en charge améliorée des écrans tactiles et une meilleure analyse du contenu. Pour cela, le projet Lezer a été développé. C’est un outil pour écrire des analyseurs (parsers).
Vous vous souvenez peut‑être de Lex et Yacc. Là, c’est la même chose mais avec des objectifs liés à CodeMirror : déjà, le parser va être en JavaScript. Ensuite, on charge à minimiser le poids à télécharger pour le parser. Le parser doit également être rapide et pouvoir travailler de manière incrémentale. Enfin, il doit être tolérant aux erreurs : si une personne est en train de taper du code dans CodeMirror, ce serait dommage qu’elle ne puisse pas profiter de la coloration syntaxique tant qu’elle n’a pas fini l’instruction ou le bloc en cours.
Lezer permet d’écrire un fichier .grammar
qui représente la grammaire à analyser, avec des points d’entrée pour brancher du code JavaScript. Tout cela est ensuite transformé en analyseur JS qui pourra être utilisé dans CodeMirror ou ailleurs. À titre d’exemple, voici à quoi ressemble le fichier .grammar
pour décrire la syntaxe JSON :
@top JsonText { value }
value { True | False | Null | Number | String | Object | Array }
String { string }
Object { "{" list<Property>? "}" }
Array { "[" list<value>? "]" }
Property { PropertyName ":" value }
PropertyName { string }
@tokens {
True { "true" }
False { "false" }
Null { "null" }
Number { '-'? int frac? exp? }
int { '0' | $[1-9] std.digit* }
frac { '.' std.digit+ }
exp { $[eE] $[+\-]? std.digit+ }
string { '"' char* '"' }
char { $[\u{20}\u{21}\u{23}-\u{5b}\u{5d}-\u{10ffff}] | "\" esc }
esc { $["\/bfnrt] | "u" hex hex hex hex }
hex { $[0-9a-fA-F] }
whitespace { $[ \n\r\t] }
}
@skip { whitespace }
list<item> { item ("," item)* }
@detectDelim
Pour finir, si vous appréciez comme moi les travaux de Marijn Haverbeke, vous pouvez financer leur maintenance via un don sur https://marijnhaverbeke.nl/fund/.
Aller plus loin
- La page personnelle de Marijn Haverbeke (281 clics)
- Eloquent JavaScript (119 clics)
- ProseMirror (137 clics)
- CodeMirror (78 clics)
- Lezer (55 clics)
- Financer ses travaux (23 clics)
# Éloquent JavaScript
Posté par ben51 . Évalué à 10.
Il existe une version traduite en français https://fr.eloquentjavascript.net/
[^] # Re: Éloquent JavaScript
Posté par ZeroHeure . Évalué à 5.
C'est basé sur la première version, or il en est a la troisième.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
# Merci...
Posté par matteli . Évalué à 5.
… pour la découverte.
J'avais cherché ce que propose ProseMirror pendant un petit moment et il n'était pas apparu.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.