O que esta ferramenta faz
O formatador de Ruby reescreve código Ruby com indentação e espaçamento consistentes. Cole um script, um model do Rails ou um Rakefile e ele volta com indentação de dois espaços, uma instrução por linha, espaços ao redor dos operadores e dentro das chaves, e cadeias longas de métodos quebradas para caber na largura da linha.
Ele usa o Syntax Tree rodando no interpretador Ruby de verdade, compilado para WebAssembly. Como o parser é o do próprio Ruby, sintaxes modernas como endless methods, pattern matching e argumentos nomeados são entendidas exatamente como o Ruby as entende.
Como usar
- Cole código Ruby ou abra um arquivo
.rb. - Aguarde o primeiro resultado. O interpretador é baixado uma única vez, em segundo plano.
- Escolha uma Largura da linha. Linhas mais longas que isso são quebradas em chamadas de método, argumentos ou entradas de hash.
- Copie ou baixe o código formatado.
Se o código não puder ser analisado, a ferramenta mostra o erro de sintaxe do Ruby, como syntax error, unexpected 'end', para você encontrar a parte que falta.
Exemplo
O exemplo é um pequeno módulo de carrinho de compras escrito sem cuidado com o layout: o corpo de uma classe sem indentação, initialize escrito em uma linha com ponto e vírgula, hashes sem espaços e um ternário sem espaços ao redor de >. Depois da formatação, o módulo e a classe ficam indentados, cada instrução de initialize ganha a própria linha, os literais de hash viram { name: name, price: price, qty: qty } e o ternário fica cart.total > 10 ? "big order" : "small order".
O que ele não muda
O formatador só muda o layout. Ele não renomeia variáveis, não converte hash rockets para a nova sintaxe nem alterna entre aspas simples e duplas. Comentários são preservados. Se você precisar dessas correções de estilo, rode a autocorreção do RuboCop no seu projeto depois de formatar.
Dicas
- Use a mesma largura de linha do
.rubocop.ymldo seu projeto (Layout/LineLength) para que o código formatado passe no seu linter. - Formatar é um jeito rápido de achar um
endfaltando: o Ruby informa onde desistiu, geralmente logo depois do bloco que não foi fechado.
Perguntas frequentes
› Qual formatador esta ferramenta usa?
O Syntax Tree, o formatador de Ruby por trás do plugin oficial de Ruby do Prettier. Ele roda no CRuby, o interpretador Ruby padrão, compilado para WebAssembly, então analisa o seu código exatamente como o Ruby faz.
› Por que a primeira execução é lenta?
Na primeira vez que você formata algo, a página baixa o interpretador Ruby e o formatador, cerca de 13 MB, e os inicia em um worker em segundo plano para que a página continue respondendo. Depois disso, a formatação leva uma fração de segundo.
› Ele segue o estilo do RuboCop?
Quase sempre. O Syntax Tree gera indentação de dois espaços, espaços dentro das chaves de hashes e ao redor dos operadores, e uma linha em branco entre métodos, o que corresponde às regras de layout padrão do RuboCop. Ele não muda o estilo das aspas nem reescreve código como o `rubocop -a` faz.
› Meu código é enviado?
Não. Tudo roda no seu navegador e nada é enviado a um servidor.