DevToolPal
NL

Ruby-formatter

Formatteer Ruby-code met Syntax Tree, draaiend op de echte Ruby-interpreter gecompileerd naar WebAssembly.

Draait lokaal, wordt nooit geüpload

Opties

Bij de eerste keer formatteren wordt de Ruby-interpreter (ongeveer 13 MB) gedownload, wat een paar seconden kan duren; daarna gaat het direct.

Invoer

0 tekens · 0 B

Uitvoer

0 tekens · 0 B

Wat deze tool doet

De Ruby-formatter herschrijft Ruby-code met consequente inspringing en spatiëring. Plak een script, een Rails-model of een Rakefile en je krijgt het terug met inspringing van twee spaties, één statement per regel, spaties rond operatoren en binnen accolades, en lange method chains die worden afgebroken om binnen de regelbreedte te passen.

Hij gebruikt Syntax Tree, draaiend op de echte Ruby-interpreter gecompileerd naar WebAssembly. Omdat de parser die van Ruby zelf is, wordt moderne syntaxis zoals endless methods, pattern matching en keyword arguments precies zo begrepen als Ruby die begrijpt.

Zo gebruik je het

  1. Plak Ruby-code of open een .rb-bestand.
  2. Wacht op het eerste resultaat. De interpreter wordt één keer gedownload, op de achtergrond.
  3. Kies een Regelbreedte. Langere regels worden afgebroken bij method calls, argumenten of hash-items.
  4. Kopieer of download de geformatteerde code.

Als de code niet geparsed kan worden, toont de tool de syntaxfout van Ruby, zoals syntax error, unexpected 'end', zodat je het ontbrekende stuk kunt vinden.

Voorbeeld

Het voorbeeld is een kleine winkelwagenmodule die zonder oog voor layout is geschreven: een klassebody die niet is ingesprongen, initialize op één regel met puntkomma’s, hashes zonder spaties en een ternary zonder spaties rond >. Na het formatteren zijn de module en klasse ingesprongen, krijgt elk statement in initialize een eigen regel, worden hash-literals { name: name, price: price, qty: qty } en luidt de ternary cart.total > 10 ? "big order" : "small order".

Wat hij niet verandert

De formatter verandert alleen de layout. Hij hernoemt geen variabelen, zet hash rockets niet om naar de nieuwe syntaxis en wisselt niet tussen enkele en dubbele aanhalingstekens. Commentaar blijft behouden. Heb je die stijlcorrecties nodig, draai dan na het formatteren de autocorrect van RuboCop in je project.

Tips

  • Gebruik dezelfde regelbreedte als in de .rubocop.yml van je project (Layout/LineLength), zodat geformatteerde code door je linter komt.
  • Formatteren is een snelle manier om een ontbrekende end te vinden: Ruby meldt waar hij het opgaf, meestal net na het blok dat niet werd afgesloten.

Veelgestelde vragen

› Welke formatter gebruikt dit?

Syntax Tree, de Ruby-formatter achter de officiële Prettier Ruby-plugin. Hij draait op CRuby, de standaard-Ruby-interpreter, gecompileerd naar WebAssembly, dus hij parset je code precies zoals Ruby dat doet.

› Waarom is de eerste keer traag?

De pagina downloadt de eerste keer dat je iets formatteert de Ruby-interpreter en de formatter, ongeveer 13 MB, en start ze in een achtergrondworker zodat de pagina blijft reageren. Daarna duurt formatteren een fractie van een seconde.

› Volgt hij de stijl van RuboCop?

Grotendeels. Syntax Tree levert inspringing van twee spaties, spaties binnen hash-accolades en rond operatoren, en één lege regel tussen methoden, wat overeenkomt met de standaard layoutregels van RuboCop. Hij verandert de stijl van aanhalingstekens niet en herschrijft geen code zoals `rubocop -a` dat doet.

› Wordt mijn code geüpload?

Nee. Alles draait in je browser en er wordt niets naar een server gestuurd.