DevToolPal
RU

Форматирование Ruby

Форматирование Ruby-кода с Syntax Tree на настоящем интерпретаторе Ruby, скомпилированном в WebAssembly.

Работает локально, без загрузки на сервер

Параметры

Первое форматирование загружает интерпретатор Ruby (около 13 МБ) и может занять несколько секунд; дальше всё работает мгновенно.

Ввод

Символов: 0 · 0 B

Результат

Символов: 0 · 0 B

Что делает этот инструмент

Форматтер Ruby переписывает код на Ruby с единообразными отступами и пробелами. Вставьте скрипт, модель Rails или Rakefile — и получите код с отступом в два пробела, одной инструкцией на строку, пробелами вокруг операторов и внутри фигурных скобок, а длинные цепочки вызовов методов будут перенесены по ширине строки.

Инструмент использует Syntax Tree на настоящем интерпретаторе Ruby, скомпилированном в WebAssembly. Поскольку парсер — собственный парсер Ruby, современный синтаксис, такой как однострочные (endless) методы, сопоставление с образцом и именованные аргументы, понимается ровно так, как его понимает Ruby.

Как пользоваться

  1. Вставьте код на Ruby или откройте файл .rb.
  2. Дождитесь первого результата. Интерпретатор скачивается один раз в фоновом режиме.
  3. Выберите Ширина строки. Строки длиннее этого значения разбиваются на вызовах методов, аргументах или элементах хеша.
  4. Скопируйте или скачайте отформатированный код.

Если код не удаётся разобрать, инструмент показывает синтаксическую ошибку 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`.

› Загружается ли мой код на сервер?

Нет. Всё выполняется в вашем браузере, и ничего не отправляется на сервер.