DevToolPal
VI

Định dạng Ruby

Định dạng mã Ruby bằng Syntax Tree, chạy trên trình thông dịch Ruby thật được biên dịch sang WebAssembly.

Chạy cục bộ, không bao giờ tải lên

Tùy chọn

Lần định dạng đầu tiên sẽ tải trình thông dịch Ruby (khoảng 13 MB) và có thể mất vài giây; các lần sau chạy tức thì.

Đầu vào

0 ký tự · 0 B

Đầu ra

0 ký tự · 0 B

Công cụ này làm gì

Công cụ định dạng Ruby viết lại mã Ruby với thụt lề và khoảng cách nhất quán. Dán một script, một model Rails hay một Rakefile và bạn sẽ nhận lại mã thụt lề hai dấu cách, mỗi câu lệnh một dòng, có dấu cách quanh toán tử và bên trong ngoặc nhọn, cùng các chuỗi lời gọi method dài được ngắt dòng cho vừa độ rộng dòng.

Công cụ dùng Syntax Tree chạy trên trình thông dịch Ruby thật được biên dịch sang WebAssembly. Vì bộ phân tích chính là của Ruby, cú pháp hiện đại như endless method, pattern matching và keyword argument được hiểu đúng như cách Ruby hiểu.

Cách sử dụng

  1. Dán mã Ruby, hoặc mở một tệp .rb.
  2. Chờ kết quả đầu tiên. Trình thông dịch chỉ được tải một lần, chạy ở chế độ nền.
  3. Chọn Độ rộng dòng. Dòng dài hơn giá trị này sẽ được ngắt tại lời gọi method, đối số hoặc phần tử hash.
  4. Sao chép hoặc tải mã đã định dạng xuống.

Nếu mã không phân tích được, công cụ hiển thị lỗi cú pháp của Ruby, chẳng hạn syntax error, unexpected 'end', để bạn tìm ra phần còn thiếu.

Ví dụ

Mã ví dụ là một module giỏ hàng nhỏ viết không chú ý đến bố cục: thân class không thụt lề, initialize viết trên một dòng với dấu chấm phẩy, hash không có dấu cách và một biểu thức ba ngôi không có dấu cách quanh >. Sau khi định dạng, module và class được thụt lề, mỗi câu lệnh trong initialize có dòng riêng, các hash literal trở thành { name: name, price: price, qty: qty } và biểu thức ba ngôi thành cart.total > 10 ? "big order" : "small order".

Những gì công cụ không thay đổi

Công cụ định dạng chỉ thay đổi bố cục. Nó không đổi tên biến, không chuyển hash rocket sang cú pháp mới, cũng không chuyển đổi giữa nháy đơn và nháy kép. Chú thích được giữ nguyên. Nếu cần những sửa đổi phong cách đó, hãy chạy tính năng tự sửa của RuboCop trong dự án sau khi định dạng.

Mẹo

  • Dùng cùng độ rộng dòng như trong .rubocop.yml của dự án (Layout/LineLength) để mã đã định dạng vượt qua linter.
  • Định dạng là cách nhanh để phát hiện một end bị thiếu: Ruby báo nơi nó bỏ cuộc, thường ngay sau khối chưa được đóng.

Câu hỏi thường gặp

› Công cụ dùng formatter nào?

Syntax Tree, formatter Ruby đứng sau plugin Ruby chính thức của Prettier. Nó chạy trên CRuby, trình thông dịch Ruby tiêu chuẩn, được biên dịch sang WebAssembly, nên phân tích mã của bạn đúng như cách Ruby làm.

› Tại sao lần chạy đầu tiên lại chậm?

Lần đầu bạn định dạng, trang sẽ tải trình thông dịch Ruby và formatter, khoảng 13 MB, rồi khởi động chúng trong một worker chạy nền để trang vẫn phản hồi. Sau đó, mỗi lần định dạng chỉ mất chưa đến một giây.

› Kết quả có theo phong cách của RuboCop không?

Phần lớn là có. Syntax Tree tạo ra thụt lề hai dấu cách, dấu cách bên trong ngoặc nhọn của hash và quanh toán tử, và một dòng trống giữa các method, khớp với các quy tắc bố cục mặc định của RuboCop. Nó không đổi kiểu dấu nháy hay viết lại mã như `rubocop -a`.

› Mã của tôi có bị tải lên không?

Không. Mọi thứ chạy trong trình duyệt của bạn và không có gì được gửi lên máy chủ.