Was das Tool macht
Der Ruby-Formatierer schreibt Ruby-Code mit einheitlicher Einrückung und einheitlichen Abständen um. Füge ein Skript, ein Rails-Model oder ein Rakefile ein, und du bekommst es zurück mit zwei Leerzeichen Einrückung, einer Anweisung pro Zeile, Leerzeichen um Operatoren und innerhalb von Klammern sowie langen Methodenketten, die auf die Zeilenbreite umbrochen sind.
Er verwendet Syntax Tree auf dem echten Ruby-Interpreter, kompiliert zu WebAssembly. Weil der Parser der von Ruby selbst ist, wird moderne Syntax wie Endless Methods, Pattern Matching und Keyword-Argumente genau so verstanden, wie Ruby sie versteht.
So benutzt du es
- Füge Ruby-Code ein oder öffne eine
.rb-Datei. - Warte auf das erste Ergebnis. Der Interpreter wird einmalig im Hintergrund heruntergeladen.
- Wähl eine Zeilenbreite. Längere Zeilen werden an Methodenaufrufen, Argumenten oder Hash-Einträgen umbrochen.
- Kopier den formatierten Code oder lade ihn herunter.
Lässt sich der Code nicht parsen, zeigt das Tool den Syntaxfehler von Ruby an, etwa syntax error, unexpected 'end', damit du das fehlende Stück findest.
Beispiel
Das Beispiel ist ein kleines Warenkorb-Modul, bei dem nicht auf das Layout geachtet wurde: ein nicht eingerückter Klassenrumpf, ein einzeiliges initialize mit Semikolons, Hashes ohne Leerzeichen und ein ternärer Operator ohne Leerzeichen um >. Nach dem Formatieren sind Modul und Klasse eingerückt, jede Anweisung in initialize steht in einer eigenen Zeile, Hash-Literale werden zu { name: name, price: price, qty: qty }, und der ternäre Ausdruck lautet cart.total > 10 ? "big order" : "small order".
Was das Tool nicht ändert
Der Formatierer ändert nur das Layout. Er benennt keine Variablen um, wandelt Hash-Rockets nicht in die neue Syntax um und wechselt nicht zwischen einfachen und doppelten Anführungszeichen. Kommentare bleiben erhalten. Wenn du solche Stilkorrekturen brauchst, führ nach dem Formatieren die Autokorrektur von RuboCop in deinem Projekt aus.
Tipps
- Verwende dieselbe Zeilenbreite wie in der
.rubocop.ymldeines Projekts (Layout/LineLength), damit formatierter Code deinen Linter besteht. - Formatieren ist ein schneller Weg, ein fehlendes
endzu finden: Ruby meldet, wo es aufgegeben hat, meist direkt nach dem Block, der nicht geschlossen wurde.
FAQ
› Welchen Formatierer verwendet das Tool?
Syntax Tree, den Ruby-Formatierer hinter dem offiziellen Prettier-Ruby-Plugin. Er läuft auf CRuby, dem Standard-Ruby-Interpreter, kompiliert zu WebAssembly, und parst deinen Code daher genau so, wie Ruby es tut.
› Warum ist der erste Durchlauf langsam?
Beim ersten Formatieren lädt die Seite den Ruby-Interpreter und den Formatierer herunter, etwa 13 MB, und startet sie in einem Hintergrund-Worker, damit die Seite reaktionsfähig bleibt. Danach dauert das Formatieren nur noch Sekundenbruchteile.
› Folgt das Tool dem Stil von RuboCop?
Größtenteils. Syntax Tree erzeugt Einrückung mit zwei Leerzeichen, Leerzeichen innerhalb von Hash-Klammern und um Operatoren sowie eine Leerzeile zwischen Methoden – das entspricht den Standard-Layoutregeln von RuboCop. Den Stil der Anführungszeichen ändert es nicht, und es schreibt Code nicht um, wie `rubocop -a` es tut.
› Wird mein Code hochgeladen?
Nein. Alles läuft in deinem Browser, und nichts wird an einen Server gesendet.