Co robi to narzędzie
Formatter Ruby przepisuje kod Ruby, nadając mu spójne wcięcia i odstępy. Wklej skrypt, model Rails albo Rakefile, a dostaniesz go z powrotem z wcięciami o szerokości dwóch spacji, jedną instrukcją na linię, spacjami wokół operatorów i wewnątrz nawiasów klamrowych oraz długimi łańcuchami wywołań metod zawiniętymi tak, by mieściły się w szerokości linii.
Wykorzystuje Syntax Tree działające na prawdziwym interpreterze Ruby skompilowanym do WebAssembly. Ponieważ parser jest parserem samego Ruby, nowoczesna składnia, taka jak metody bez end (endless methods), dopasowywanie wzorców (pattern matching) i argumenty słów kluczowych, jest rozumiana dokładnie tak, jak rozumie ją Ruby.
Jak używać
- Wklej kod Ruby lub otwórz plik
.rb. - Poczekaj na pierwszy wynik. Interpreter jest pobierany jednorazowo, w tle.
- Wybierz Szerokość linii. Dłuższe linie są łamane przy wywołaniach metod, argumentach lub elementach hasha.
- Skopiuj lub pobierz sformatowany kod.
Jeśli kodu nie da się sparsować, narzędzie pokazuje błąd składni Ruby, np. syntax error, unexpected 'end', abyś mógł znaleźć brakujący fragment.
Przykład
Przykład to mały moduł koszyka zakupowego napisany bez dbałości o układ: ciało klasy bez wcięć, initialize zapisany w jednej linii ze średnikami, hashe bez spacji i operator trójargumentowy bez spacji wokół >. Po sformatowaniu moduł i klasa mają wcięcia, każda instrukcja w initialize dostaje własną linię, literały hashy przyjmują postać { name: name, price: price, qty: qty }, a operator trójargumentowy wygląda tak: cart.total > 10 ? "big order" : "small order".
Czego nie zmienia
Formatter zmienia tylko układ. Nie zmienia nazw zmiennych, nie konwertuje „hash rockets” na nową składnię ani nie przełącza między pojedynczymi a podwójnymi cudzysłowami. Komentarze są zachowywane. Jeśli potrzebujesz takich poprawek stylu, po sformatowaniu uruchom w projekcie autokorektę RuboCop.
Wskazówki
- Używaj tej samej szerokości linii co w
.rubocop.ymltwojego projektu (Layout/LineLength), aby sformatowany kod przechodził przez linter. - Formatowanie to szybki sposób na znalezienie brakującego
end: Ruby zgłasza miejsce, w którym się poddał, zwykle tuż za niezamkniętym blokiem.
FAQ
› Jakiego formattera używa to narzędzie?
Syntax Tree, formattera Ruby stojącego za oficjalną wtyczką Prettier Ruby. Działa na CRuby, standardowym interpreterze Ruby, skompilowanym do WebAssembly, więc parsuje twój kod dokładnie tak, jak robi to Ruby.
› Dlaczego pierwsze uruchomienie jest wolne?
Przy pierwszym formatowaniu strona pobiera interpreter Ruby i formatter, około 13 MB, i uruchamia je w workerze w tle, aby strona nadal reagowała. Potem formatowanie trwa ułamek sekundy.
› Czy jest zgodny ze stylem RuboCop?
W większości tak. Syntax Tree daje wcięcia o szerokości dwóch spacji, spacje wewnątrz nawiasów klamrowych hashy i wokół operatorów oraz jedną pustą linię między metodami, co odpowiada domyślnym regułom układu RuboCop. Nie zmienia stylu cudzysłowów ani nie przepisuje kodu tak, jak robi to `rubocop -a`.
› Czy mój kod jest wysyłany?
Nie. Wszystko działa w twojej przeglądarce i nic nie jest wysyłane na serwer.