DevToolPal
简

Ruby 代码格式化

用 Syntax Tree 格式化 Ruby 代码,底层是编译成 WebAssembly 的真正 Ruby 解释器。

本地处理,不上传

选项

第一次格式化需要下载 Ruby 解释器(约 13 MB),可能要等几秒钟,之后就很快了。

输入

0 字符 · 0 B

输出

0 字符 · 0 B

工具简介

Ruby 代码格式化工具会把 Ruby 代码整理成统一的缩进和空格风格。粘贴一段脚本、一个 Rails 模型或者 Rakefile,得到的结果是两个空格缩进、每行一条语句、运算符两边和大括号内侧加空格,过长的方法链按每行宽度自动换行。

工具使用运行在真正 Ruby 解释器上的 Syntax Tree,解释器编译成了 WebAssembly。因为用的是 Ruby 自己的解析器,像无括号的单行方法定义、模式匹配和关键字参数这些现代语法,都会按照 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"。

不会改动的内容

格式化只调整排版。它不会重命名变量,不会把 => 写法的哈希改成新语法,也不会在单引号和双引号之间切换。注释都会保留。如果需要这些风格修正,可以在格式化之后在项目里运行 RuboCop 的自动修正。

小技巧

  • 把每行宽度设成和项目 .rubocop.yml 里 Layout/LineLength 一样的值,格式化后的代码就能通过代码检查。
  • 格式化也是查找缺失 end 的快捷方法:Ruby 会报告它停下的位置,通常就在没闭合的代码块之后。

常见问题

› 用的是什么格式化程序?

Syntax Tree,也就是官方 Prettier Ruby 插件背后的 Ruby 格式化程序。它运行在编译成 WebAssembly 的 CRuby(标准 Ruby 解释器)上,所以解析代码的方式和 Ruby 本身完全一致。

› 为什么第一次运行比较慢?

第一次格式化时,页面要下载 Ruby 解释器和格式化程序(约 13 MB),并在后台 Worker 里启动,页面在此期间不会卡住。之后每次格式化都只需要不到一秒。

› 符合 RuboCop 的风格吗?

基本符合。Syntax Tree 输出两个空格缩进、哈希大括号内侧和运算符两边的空格,以及方法之间空一行,这些都与 RuboCop 默认的排版规则一致。但它不会像 `rubocop -a` 那样修改引号风格或改写代码。

› 我的代码会被上传吗?

不会。所有处理都在浏览器里完成,不会向服务器发送任何内容。