- เพิ่มความสามารถในการเรนเดอร์ไดอะแกรมข้อความเป็น ASCII ใน D2 เวอร์ชัน 0.7.1
- สามารถใช้ ไดอะแกรม ASCII แบบเรียบง่าย ในคอมเมนต์ของโค้ดเพื่ออธิบายลำดับการทำงานของฟังก์ชันหรือคลาสได้
- โดยค่าเริ่มต้นจะใช้ อักขระ Unicode แต่สามารถเลือกใช้ ASCII มาตรฐานได้ด้วย option flag
- ฟีเจอร์นี้ยังอยู่ใน ขั้นอัลฟา จึงยังไม่รองรับบางสไตล์ อักขระพิเศษ และรูปทรงบางชนิด
- สามารถ ทดลองเรนเดอร์ ASCII ได้โดยตรง ใน D2 Playground และส่วนขยาย Vim เป็นต้น
แนะนำการเรนเดอร์ ASCII ของ D2
ตั้งแต่รีลีสล่าสุดของ D2 (เวอร์ชัน 0.7.1) ได้เพิ่ม ความสามารถในการส่งออกเป็น ASCII สำหรับไดอะแกรมข้อความ
ไฟล์เอาต์พุตที่มีนามสกุล .txt จะถูกเรนเดอร์ด้วยตัวเรนเดอร์ ASCII โดยอัตโนมัติ
สามารถดูตัวอย่างได้ใน ส่วนขยาย D2 สำหรับ Vim โดยเมื่อเปิดไฟล์ .d2 และดูผ่านหน้าต่างพรีวิว ก็สามารถตรวจสอบสถานะเอาต์พุตไดอะแกรม ASCII แบบเรียลไทม์ทุกครั้งที่บันทึกได้
การใช้งานในการจัดทำเอกสารโค้ด
ไดอะแกรม ASCII มีประโยชน์มากที่สุดเมื่อแทรกไว้ใน คอมเมนต์ของซอร์สโค้ด
- หากเพิ่มไดอะแกรมแบบง่ายไว้ข้างฟังก์ชันหรือคลาสขนาดเล็ก ก็จะช่วยให้เข้าใจโค้ดได้อย่างเป็นธรรมชาติมากกว่าการอธิบายลำดับการทำงานด้วยข้อความเพียงอย่างเดียว
- ในส่วนขยาย Vim สามารถเขียนโค้ด D2 แล้วแปลงส่วนที่เลือกให้เป็นไดอะแกรม ASCII ได้ทันที
การเลือกระหว่าง Unicode และ ASCII มาตรฐาน
การเรนเดอร์ ASCII แบบดีฟอลต์จะใช้อักขระวาดกรอบของ Unicode เพื่อให้เอาต์พุตดูสวยงามกว่า
- หากต้องการ ความเข้ากันได้สูงสุด ก็สามารถเรนเดอร์ด้วยอักขระ ASCII ปกติได้ผ่าน option flag
--ascii-mode=standard
ข้อจำกัดในปัจจุบัน
ฟีเจอร์การเรนเดอร์ ASCII นี้ยังอยู่ใน ขั้นอัลฟา
- อาจยังมีเคสขอบ ความจุดที่ควรปรับปรุง และบั๊กอีกจำนวนมาก
- ผู้พัฒนาสนับสนุนให้ส่งรายงานบั๊กหรือฟีดแบ็กผ่านเว็บไซต์
ข้อจำกัดหลัก
- ยังไม่รองรับสไตล์
- แอนิเมชัน ฟอนต์ เป็นต้น ไม่มีความหมายใน ASCII
- มีแผนพิจารณารองรับสไตล์แบบจำกัดบางส่วนในอนาคต เช่น สีของเทอร์มินัล
- ธีมก็ยังไม่รองรับ
- double-border, multiple เป็นต้น อยู่ในรายการที่จะปรับปรุงในอนาคต
- ระยะห่างไม่สม่ำเสมอ
- ในกระบวนการแปลงเป็น ASCII การจัดวางกล่องอาจไม่สม่ำเสมอเมื่อเทียบกับ SVG
- สิ่งที่ยังเรนเดอร์ไม่ได้
- ยังไม่รองรับข้อความพิเศษ เช่น Markdown, Latex และโค้ด
- ไม่สามารถเรนเดอร์รูปภาพ ไอคอน UML class และ SQL table ได้
- สำหรับรายการเหล่านี้ จะตัดออกหรือแสดงเป็น placeholder จะตัดสินใจภายหลัง
- ยังไม่รองรับรูปทรงบางชนิด
- รูปทรงเส้นโค้ง เช่น cloud หรือวงกลม แสดงผลใน ASCII ได้ไม่ดี
- รูปทรงเหล่านี้จะถูกแทนด้วยสี่เหลี่ยม และเพิ่มไอคอนขนาดเล็กที่มุมซ้ายบนเพื่อแยกประเภท
ลองใช้งานด้วยตัวเอง
ฟีเจอร์นี้สามารถใช้งานได้ทันทีใน D2 Playground
- สามารถเปิดโค้ดบล็อกที่ให้มาแล้วทดลองเรนเดอร์ ASCII ได้ด้วยตัวเอง
1 ความคิดเห็น
ความเห็นใน Hacker News
สวัสดีนักพัฒนาทุกคน อยากมาแชร์ฟีเจอร์ใหม่ที่เพิ่มเข้ามาเมื่อเช้านี้ ตอนนี้ยังอยู่ในช่วงอัลฟา และก็มี github issue ขึ้นมาแล้วหนึ่งรายการ ถ้าอยากข้ามบทความบล็อกไปลองดูเลย ก็เข้าไปดูได้ที่นี่ และตัวอย่างที่ใหญ่ขึ้นก็มีลิงก์นี้
อยากรู้ว่าเมื่อเทียบกับ mermaid แล้วมันมีคุณค่าอย่างไรบ้าง ฉันชอบทั้งดีไซน์และวิธีการทำงานของมัน แต่อยากถามว่ามีเหตุผลเชิงปฏิบัติอะไรที่ทำให้ย้ายมาจาก mermaid ไหม อีกอย่างฉันรู้สึกว่าเครื่องมือแนวนี้มักขาดฟีเจอร์ให้ปรับตำแหน่งและขนาดของกล่องด้วยค่า x/y แบบ manual ในผลลัพธ์ที่สร้างอัตโนมัติ
แม้ว่าไวยากรณ์ของ D2 จะน่าดึงดูดมาก แต่ที่ผ่านมาใช้ Mermaid มากกว่าเพราะ tooling ของมัน อย่างไรก็ตาม ฟีเจอร์นี้ถือว่าใหม่แบบใหญ่ ๆ และเป็นสิ่งที่ฉันไม่เคยเห็นใน Mermaid มาก่อน มันยังเชื่อมโยงกับ asciiflow.com ได้ดีด้วย
ฟีเจอร์แปลงจาก ASCII นั้นดีมาก แต่เวลาต้องอัปเดตไดอะแกรม ฉันสงสัยว่าจะเอา D2 source ต้นฉบับกลับมาได้อย่างไร
ฉันชอบ D2 มากกว่า mermaid มาโดยตลอด แต่ในความเห็นฉัน grid layout แทบจะไร้ประโยชน์เพราะปัญหานี้(issue ที่เกี่ยวข้อง) ถ้ายังต้องมานั่งจัดหน่วยพิกเซลเอง มันก็แทบไม่ต่างจากทำลายจุดประสงค์ของเครื่องมือประเภทนี้
ฉันเคยดูแลรายชื่อเครื่องมือ text-to-diagram แบบเบราว์เซอร์และแชร์มันหลายครั้ง สิ่งที่เพิ่งรู้ไม่นานนี้คือ D2 เวอร์ชันออนไลน์ไม่ได้รันอยู่ในเบราว์เซอร์ล้วน ๆ แต่ใช้เซิร์ฟเวอร์แบ็กเอนด์สร้างไดอะแกรม อยากรู้ว่า D2 สามารถทำงานแบบฝั่งไคลเอนต์(ในเบราว์เซอร์)เพียงอย่างเดียวได้ไหม และส่วนขยายที่พูดถึงในโพสต์นี้จะทำงานแบบออฟไลน์ได้หรือเปล่า
อยากให้มี Python repository อย่างเป็นทางการ อยากใช้ใน notebook แต่ตอนนี้เหมือนถูกบังคับให้ใช้ databricks อย่างเดียว เลยไม่ค่อยสะดวก
หน้าตาดูดีมาก ฉันเคยเห็นโพสต์เรื่องรองรับ C4 ที่เคยลงไว้ก่อนหน้านี้ด้วย ไม่นานนี้ฉันจะต้องทำ C4 modeling เลยตั้งใจว่าจะลองดู
เป็นฟีเจอร์ที่เจ๋งมาก เพิ่งเคยได้ยินชื่อ D2 แต่ชอบมากตรงที่ทำกราฟในเทอร์มินัลได้ทันที และยังเรนเดอร์ออกมาได้สวยด้วย เดี๋ยวจะลองใช้เร็ว ๆ นี้
extension ของ vim นี่เทพมาก