Cosa fa questo strumento
Il formattatore Ruby riscrive il codice Ruby con indentazione e spaziatura coerenti. Incolla uno script, un model Rails o un Rakefile e lo riottieni con indentazione di due spazi, un’istruzione per riga, spazi attorno agli operatori e dentro le graffe, e le lunghe catene di metodi spezzate per rientrare nella larghezza di riga.
Usa Syntax Tree in esecuzione sul vero interprete Ruby compilato in WebAssembly. Poiché il parser è quello di Ruby, la sintassi moderna come gli endless method, il pattern matching e gli argomenti keyword viene interpretata esattamente come la interpreta Ruby.
Come si usa
- Incolla codice Ruby oppure apri un file
.rb. - Attendi il primo risultato. L’interprete viene scaricato una sola volta, in background.
- Scegli una Larghezza riga. Le righe più lunghe vengono spezzate in corrispondenza di chiamate di metodo, argomenti o voci di hash.
- Copia o scarica il codice formattato.
Se il codice non si riesce ad analizzare, lo strumento mostra l’errore di sintassi di Ruby, come syntax error, unexpected 'end', così puoi trovare il pezzo mancante.
Esempio
L’esempio è un piccolo modulo di carrello della spesa scritto senza badare all’impaginazione: il corpo di una classe non indentato, initialize scritto su una riga con i punti e virgola, hash senza spazi e un operatore ternario senza spazi attorno a >. Dopo la formattazione modulo e classe sono indentati, ogni istruzione di initialize ha la sua riga, i letterali hash diventano { name: name, price: price, qty: qty } e il ternario si legge cart.total > 10 ? "big order" : "small order".
Cosa non cambia
Il formattatore cambia solo l’impaginazione. Non rinomina variabili, non converte gli hash rocket nella nuova sintassi e non passa da apici singoli a virgolette doppie o viceversa. I commenti vengono mantenuti. Se ti servono queste correzioni di stile, esegui l’autocorrezione di RuboCop nel tuo progetto dopo la formattazione.
Suggerimenti
- Usa la stessa larghezza di riga del
.rubocop.ymldel tuo progetto (Layout/LineLength), così il codice formattato passa il linter. - La formattazione è un modo rapido per scovare un
endmancante: Ruby segnala dove si è arreso, di solito subito dopo il blocco non chiuso.
Domande frequenti
› Quale formatter usa?
Syntax Tree, il formatter Ruby alla base del plugin Ruby ufficiale di Prettier. Gira su CRuby, l'interprete Ruby standard, compilato in WebAssembly, quindi analizza il tuo codice esattamente come fa Ruby.
› Perché la prima esecuzione è lenta?
La prima volta che formatti qualcosa la pagina scarica l'interprete Ruby e il formatter, circa 13 MB, e li avvia in un worker in background così la pagina resta reattiva. Dopodiché la formattazione richiede una frazione di secondo.
› Segue lo stile di RuboCop?
In gran parte sì. Syntax Tree produce un'indentazione di due spazi, spazi dentro le graffe degli hash e attorno agli operatori e una riga vuota tra i metodi, il che corrisponde alle regole di layout predefinite di RuboCop. Non cambia lo stile delle virgolette e non riscrive il codice come fa `rubocop -a`.
› Il mio codice viene caricato?
No. Tutto viene eseguito nel tuo browser e nulla viene inviato a un server.