Що робить цей інструмент
Форматувальник Ruby переписує код Ruby з послідовними відступами й пробілами. Вставте скрипт, модель Rails чи Rakefile — і отримаєте відступи у два пробіли, одну інструкцію на рядок, пробіли навколо операторів і всередині фігурних дужок, а довгі ланцюжки викликів методів будуть перенесені відповідно до ширини рядка.
Він використовує Syntax Tree на справжньому інтерпретаторі Ruby, скомпільованому у WebAssembly. Оскільки парсер — власний парсер Ruby, сучасний синтаксис, як-от endless-методи, зіставлення зі зразком (pattern matching) і ключові аргументи, розуміється точно так, як його розуміє Ruby.
Як користуватися
- Вставте код Ruby або відкрийте файл
.rb. - Дочекайтеся першого результату. Інтерпретатор завантажується один раз у фоновому режимі.
- Виберіть Ширина рядка. Довші рядки розбиваються на викликах методів, аргументах чи елементах хешу.
- Скопіюйте або збережіть відформатований код.
Якщо код не вдається розібрати, інструмент показує синтаксичну помилку Ruby, наприклад syntax error, unexpected 'end', щоб ви могли знайти, чого бракує.
Приклад
Приклад — невеликий модуль кошика покупок, написаний без уваги до форматування: тіло класу без відступів, initialize в один рядок через крапки з комою, хеші без пробілів і тернарний оператор без пробілів навколо >. Після форматування модуль і клас отримують відступи, кожна інструкція в initialize — окремий рядок, літерали хешів стають { name: name, price: price, qty: qty }, а тернарний оператор виглядає як cart.total > 10 ? "big order" : "small order".
Чого форматувальник не змінює
Форматувальник змінює лише розмітку коду. Він не перейменовує змінні, не перетворює «hash rockets» на новий синтаксис і не перемикає одинарні й подвійні лапки. Коментарі зберігаються. Якщо потрібні такі стильові виправлення, після форматування запустіть автовиправлення RuboCop у своєму проєкті.
Поради
- Використовуйте ту саму ширину рядка, що й у
.rubocop.ymlвашого проєкту (Layout/LineLength), щоб відформатований код проходив перевірку лінтера. - Форматування — швидкий спосіб знайти пропущений
end: Ruby повідомляє, де здався, зазвичай одразу після незакритого блоку.
Часті запитання
› Який форматувальник тут використовується?
Syntax Tree — форматувальник Ruby, на якому побудовано офіційний плагін Prettier для Ruby. Він працює на CRuby, стандартному інтерпретаторі Ruby, скомпільованому у WebAssembly, тож розбирає ваш код точно так, як це робить сам Ruby.
› Чому перший запуск повільний?
Коли ви вперше щось форматуєте, сторінка завантажує інтерпретатор Ruby і форматувальник — близько 13 МБ — і запускає їх у фоновому воркері, щоб сторінка не зависала. Після цього форматування триває частку секунди.
› Чи дотримується він стилю RuboCop?
Здебільшого так. Syntax Tree робить відступ у два пробіли, пробіли всередині фігурних дужок хешів і навколо операторів та один порожній рядок між методами, що відповідає стандартним правилам розмітки RuboCop. Він не змінює стиль лапок і не переписує код так, як `rubocop -a`.
› Чи вивантажується мій код на сервер?
Ні. Усе виконується у вашому браузері, і нічого не надсилається на сервер.