เครื่องมือนี้ทำอะไร
ตัวจัดรูปแบบ Ruby เขียนโค้ด Ruby ใหม่ให้มีการเยื้องและการเว้นวรรคที่สม่ำเสมอ วางสคริปต์ โมเดล Rails หรือ Rakefile แล้วจะได้โค้ดที่เยื้องสองช่องว่าง หนึ่งคำสั่งต่อบรรทัด มีช่องว่างรอบตัวดำเนินการและภายในวงเล็บปีกกา และ method chain ที่ยาวถูกตัดบรรทัดให้พอดีกับความกว้างบรรทัด
เครื่องมือนี้ใช้ Syntax Tree ที่รันบนตัวแปลภาษา Ruby ตัวจริงซึ่งคอมไพล์เป็น WebAssembly เพราะ parser เป็นของ Ruby เอง ไวยากรณ์สมัยใหม่อย่าง endless method, pattern matching และ keyword argument จึงถูกเข้าใจแบบเดียวกับที่ Ruby เข้าใจทุกประการ
วิธีใช้งาน
- วางโค้ด Ruby หรือเปิดไฟล์
.rb - รอผลลัพธ์แรก ตัวแปลภาษาจะถูกดาวน์โหลดครั้งเดียวในเบื้องหลัง
- เลือก ความกว้างบรรทัด บรรทัดที่ยาวกว่านี้จะถูกตัดที่การเรียกเมธอด อาร์กิวเมนต์ หรือรายการใน hash
- คัดลอกหรือดาวน์โหลดโค้ดที่จัดรูปแบบแล้ว
หากโค้ด parse ไม่ได้ เครื่องมือจะแสดงข้อผิดพลาดทางไวยากรณ์ของ Ruby เช่น syntax error, unexpected 'end' เพื่อให้คุณหาส่วนที่ขาดไปได้
ตัวอย่าง
ตัวอย่างคือโมดูลตะกร้าสินค้าเล็ก ๆ ที่เขียนโดยไม่สนใจเลย์เอาต์: เนื้อหาคลาสไม่ได้เยื้อง initialize เขียนในบรรทัดเดียวด้วยเซมิโคลอน hash ไม่มีช่องว่าง และ ternary ที่ไม่มีช่องว่างรอบ > หลังจัดรูปแบบ โมดูลและคลาสจะถูกเยื้อง แต่ละคำสั่งใน initialize อยู่บรรทัดของตัวเอง hash literal กลายเป็น { name: name, price: price, qty: qty } และ ternary อ่านได้เป็น cart.total > 10 ? "big order" : "small order"
สิ่งที่ไม่เปลี่ยน
ตัวจัดรูปแบบเปลี่ยนเฉพาะเลย์เอาต์ ไม่เปลี่ยนชื่อตัวแปร ไม่แปลง hash rocket เป็นไวยากรณ์ใหม่ และไม่สลับระหว่างเครื่องหมายคำพูดเดี่ยวกับคู่ คอมเมนต์จะถูกเก็บไว้ หากต้องการแก้สไตล์เหล่านั้น ให้รัน autocorrect ของ RuboCop ในโปรเจกต์หลังจัดรูปแบบ
เคล็ดลับ
- ใช้ความกว้างบรรทัดเดียวกับใน
.rubocop.ymlของโปรเจกต์ (Layout/LineLength) เพื่อให้โค้ดที่จัดรูปแบบแล้วผ่าน linter - การจัดรูปแบบเป็นวิธีที่เร็วในการหา
endที่ขาดไป: Ruby จะบอกจุดที่หยุด ซึ่งมักอยู่ถัดจากบล็อกที่ไม่ได้ปิด
คำถามที่พบบ่อย
› เครื่องมือนี้ใช้ตัวจัดรูปแบบอะไร?
ใช้ Syntax Tree ตัวจัดรูปแบบ Ruby ที่อยู่เบื้องหลังปลั๊กอิน Prettier Ruby อย่างเป็นทางการ ทำงานบน CRuby ตัวแปลภาษา Ruby มาตรฐานที่คอมไพล์เป็น WebAssembly จึง parse โค้ดของคุณแบบเดียวกับที่ Ruby ทำทุกประการ
› ทำไมครั้งแรกจึงช้า?
ครั้งแรกที่คุณจัดรูปแบบ หน้าเว็บจะดาวน์โหลดตัวแปลภาษา Ruby และตัวจัดรูปแบบ ขนาดประมาณ 13 MB แล้วเริ่มทำงานใน background worker เพื่อให้หน้าเว็บยังตอบสนองได้ หลังจากนั้นการจัดรูปแบบใช้เวลาไม่ถึงวินาที
› เป็นไปตามสไตล์ของ RuboCop ไหม?
ส่วนใหญ่ใช่ Syntax Tree เยื้องสองช่องว่าง เว้นช่องว่างภายในวงเล็บปีกกาของ hash และรอบตัวดำเนินการ และเว้นบรรทัดว่างหนึ่งบรรทัดระหว่างเมธอด ซึ่งตรงกับกฎเลย์เอาต์เริ่มต้นของ RuboCop แต่ไม่เปลี่ยนสไตล์เครื่องหมายคำพูดหรือเขียนโค้ดใหม่แบบที่ `rubocop -a` ทำ
› โค้ดของฉันถูกอัปโหลดหรือไม่?
ไม่ ทุกอย่างทำงานในเบราว์เซอร์ของคุณ และไม่มีอะไรถูกส่งไปยังเซิร์ฟเวอร์