Aller au contenu principal

Prettier pour Ruby atteint la v1.0 🎉

· 4 minutes de lecture
Traduction BĂŞta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Après 1500 commits et 50 versions depuis juillet 2018, nous sommes ravis d'annoncer la sortie de la v1.0 de Prettier pour Ruby. Dans cet article, nous vous proposons un aperçu du fonctionnement du plugin, de sa philosophie et des développements à venir.

Comment fonctionne-t-il ?​

Prettier pour Ruby s'appuie sur l'API de plugins de Prettier. Sa fonction parse lance un processus Ruby et utilise le propre parseur de Ruby (appelé Ripper). Après avoir recensé tous les types de nœuds, commentaires, informations de localisation et autres métadonnées, elle renvoie un arbre syntaxique abstrait (AST) construit au processus Prettier. Enfin, elle convertit cet AST en représentation intermédiaire de Prettier (appelée Doc) avant que Prettier ne l'imprime.

Philosophie​

Le plugin Ruby cherche à s'accommoder de toutes les variétés de code. Par exemple, si vous appelez une méthode avec ou sans parenthèses, le plugin respectera votre choix. Pour certains cas où la communauté Ruby a des opinions bien arrêtées, des options sont proposées. Parmi elles :

  • rubyArrayLiteral - Par dĂ©faut, le plugin convertit les tableaux de chaĂ®nes et symboles simples en syntaxe littĂ©rale (%w et %i respectivement). Si vous dĂ©sactivez cette option, il les laissera intacts.

  • rubyHashLabel - Cette option est pour les adeptes de la flèche de hachage (=>). Par dĂ©faut, le plugin Ruby imprimera vos clĂ©s de hachage de manière cohĂ©rente : il utilisera des Ă©tiquettes si possible pour chaque clĂ©, sinon il utilisera des flèches de hachage pour chaque clĂ©. Si vous dĂ©sactivez le comportement par dĂ©faut, toutes les clĂ©s des hachages utiliseront toujours des flèches de hachage.

  • rubyModifier - Pour les utilisateurs qui n'apprĂ©cient pas la forme modifiĂ©e des conditions if, unless, while et until.

  • rubySingleQuote - Le comportement par dĂ©faut utilise les guillemets simples quand cela est pertinent, sinon des doubles. Cette option inverse ce choix.

  • rubyToProc - Permet Ă  Prettier de convertir des expressions comme array.map { |elem| elem.to_s } en array.map(&:to_s). DĂ©sactivĂ©e par dĂ©faut car elle modifie l'aritĂ© du bloc, ce qui peut perturber le code de rĂ©flexion.

Le plugin prend également en charge diverses options centrales de Prettier, dont :

  • printWidth - Par dĂ©faut Ă  80 caractères, modifiable selon vos prĂ©fĂ©rences.

  • tabWidth - Par dĂ©faut Ă  2 caractères.

  • trailingComma - Par dĂ©faut "none", mais vous pouvez choisir "all" pour ajouter des virgules finales dans les tableaux littĂ©raux, hachages littĂ©raux et listes d'arguments s'Ă©tendant sur plusieurs lignes.

Globalement, le style de Prettier correspond au guide de style Ruby, soit la configuration par défaut de Rubocop. Toutefois, avec Prettier, vous pourriez souhaiter désactiver les règles Formatting/* de Rubocop pour accélérer vos exécutions de linter.

Prochaines étapes​

Nous travaillerons prochainement sur :

  • La prise en charge des nouvelles syntaxes de Ruby 3, dont l'assignation Ă  droite et le filtrage par motif avancĂ©.

  • L'amĂ©lioration des performances, comme dans ces expĂ©rimentations.

  • L'intĂ©gration du langage Ruby dans le playground de Prettier.

  • Prise en charge des modèles HTML ERB via un autre plugin, comme dans cette expĂ©rimentation.

Aujourd'hui, vous pouvez tester le plugin en ligne de commande en suivant les instructions du README. N'hésitez surtout pas à signaler tout bug que vous trouverez, nous travaillons activement à les corriger dès leur apparition. Et n'hésitez pas non plus à commencer à contribuer au projet si cela vous intéresse.