Zum Hauptinhalt springen

Prettier für Ruby erreicht v1.0 🎉

· 3 Min. Lesezeit
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Nach 1500 Commits und 50 Releases seit Juli 2018 freuen wir uns, die Veröffentlichung von Version 1.0 des Prettier für Ruby-Plugins bekannt zu geben. In diesem Blogbeitrag geben wir einen kurzen Überblick über die Funktionsweise des Plugins, seine Philosophie und was in Zukunft zu erwarten ist.

Wie funktioniert es?

Prettier für Ruby nutzt die Plugin-API von Prettier. Seine parse-Funktion startet einen Ruby-Prozess und verwendet Rubys eigenen Parser (bekannt als Ripper). Nachdem verschiedene Knotentypen, Kommentare, Positionsinformationen und andere Metadaten erfasst wurden, liefert es einen erstellten abstrakten Syntaxbaum (AST) an den Prettier-Prozess zurück. Abschließend wird dieser AST in Prettiers Zwischendarstellung (bekannt als Doc) umgewandelt, bevor Prettier die Ausgabe übernimmt.

Philosophie

Das Ruby-Plugin versucht, möglichst viele Codevarianten zu akzeptieren. Wenn Sie beispielsweise eine Methode mit oder ohne Klammern aufrufen, respektiert das Plugin Ihre Wahl. Für einige Fälle, in denen sich die Ruby-Community auf bestimmte Konventionen festgelegt hat, werden jedoch Optionen angeboten. Dazu gehören:

  • rubyArrayLiteral - Standardmäßig wandelt das Plugin Arrays einfacher Strings und Symbole in die entsprechende Array-Literal-Syntax um (%w bzw. %i). Bei Deaktivierung bleibt der ursprüngliche Code unverändert.

  • rubyHashLabel - Diese Option ist für Anhänger des "Hash-Rocket". Standardmäßig werden Hash-Keys konsistent formatiert: Labels werden verwendet wo möglich, sonst durchgängig Hash-Rockets. Bei Deaktivierung werden immer Hash-Rockets verwendet.

  • rubyModifier - Für Nutzer, die die Modifikator-Form von if, unless, while und until ablehnen.

  • rubySingleQuote - Standardmäßig werden einfache Anführungszeichen verwendet, wo sinnvoll. Diese Option kehrt das Verhalten um.

  • rubyToProc - Ermöglicht die Umwandlung von array.map { |elem| elem.to_s } in array.map(&:to_s). Standardmäßig deaktiviert, da sich die Arity des Blocks ändert, was Reflection-Code brechen könnte.

Zusätzlich unterstützt das Plugin folgende Prettier-Kernoptionen:

  • printWidth - Standardwert 80 Zeichen, kann bei Bedarf erhöht werden.

  • tabWidth - Standardmäßig 2 Zeichen.

  • trailingComma - Standardwert "none". Bei "all" werden nachgestellte Kommas in mehrzeiligen Array-Literalen, Hash-Literalen und Argumentlisten eingefügt.

Generell orientiert sich der Stil am Ruby-Styleguide, also der Standard-Rubocop-Konfiguration. Bei Prettier-Nutzung empfiehlt es sich, die Formatting/*-Regeln in Rubocop zu deaktivieren, um Lint-Läufe zu beschleunigen.

Was kommt als Nächstes?

Geplant sind folgende Verbesserungen:

  • Unterstützung neuer Ruby-3-Syntax wie Rechtszuweisungen und erweiterte Pattern Matching.

  • Leistungsoptimierungen basierend auf diesen Experimenten.

  • Ruby-Unterstützung in Prettiers Playground.

  • Unterstützung für HTML-ERB-Vorlagen als weiteres Plugin, wie in diesem Experiment.

Sie können das Plugin bereits heute über die Kommandozeile ausprobieren, indem Sie den Anweisungen im README folgen. Bitte melden Sie alle gefundenen Fehler – wir arbeiten gewissenhaft daran, diese schnellstmöglich zu beheben. Wenn Sie interessiert sind, können Sie gerne auch selbst Beiträge zum Projekt leisten.