- Pada D2 versi 0.7.1, ditambahkan fitur untuk merender diagram teks ke ASCII
- Dengan diagram ASCII sederhana di komentar kode, alur fungsi atau kelas bisa dijelaskan
- Secara default menggunakan karakter Unicode, tetapi dapat memilih ASCII standar melalui flag opsi
- Fitur ini masih dalam tahap alfa, sehingga sebagian style, karakter khusus, dan bentuk tertentu belum didukung
- Rendering ASCII dapat dicoba langsung di D2 Playground dan ekstensi Vim
Pengenalan rendering ASCII di D2
Mulai dari rilis terbaru D2 (versi 0.7.1), ditambahkan fitur output ASCII untuk diagram teks.
File output dengan ekstensi .txt akan otomatis dirender menggunakan renderer ASCII.
Contohnya bisa dilihat di ekstensi Vim D2, dan saat membuka file .d2 serta menyimpannya melalui jendela pratinjau, hasil diagram ASCII dapat dipantau secara real-time.
Pemanfaatan dalam dokumentasi kode
Diagram ASCII paling praktis saat disisipkan ke dalam komentar source code
- Jika menambahkan diagram sederhana di samping fungsi atau kelas kecil, pemahaman kode dapat terbantu secara lebih intuitif dibanding penjelasan alur biasa
- Di ekstensi Vim, Anda dapat menulis kode D2 lalu langsung mengubah area yang dipilih menjadi diagram ASCII
Memilih Unicode atau ASCII standar
Rendering ASCII bawaan menggunakan karakter box-drawing Unicode untuk memberikan output yang lebih enak dilihat
- Jika menginginkan portabilitas maksimum, Anda juga bisa merender dengan karakter ASCII biasa melalui flag opsi
--ascii-mode=standard
Keterbatasan saat ini
Fitur rendering ASCII ini masih dalam tahap alfa
- Bisa ada banyak corner case, area yang perlu ditingkatkan, dan bug
- Pengguna didorong untuk mengirim laporan bug atau masukan melalui situs web
Batasan utama
- Style belum didukung
- Animasi, font, dan sejenisnya tidak bermakna dalam ASCII
- Ke depannya akan dipertimbangkan dukungan untuk sebagian style terbatas seperti warna terminal
- Tema juga belum didukung
double-border,multiple, dan sebagainya masuk dalam daftar peningkatan untuk masa depan
- Jarak yang tidak seragam
- Dalam proses konversi ke ASCII, penempatan kotak bisa menjadi lebih tidak teratur dibanding SVG
- Objek yang tidak dapat dirender
- Dukungan untuk teks khusus seperti Markdown, Latex, dan kode belum diimplementasikan
- Gambar dan ikon, kelas UML, tabel SQL, dan sebagainya tidak dapat dirender
- Untuk item-item ini, nantinya akan diputuskan apakah akan dihapus atau ditampilkan sebagai placeholder
- Sebagian bentuk belum didukung
- Bentuk melengkung seperti cloud dan lingkaran sulit direpresentasikan dengan baik dalam ASCII
- Bentuk tersebut akan diganti dengan persegi panjang, lalu dibedakan tipenya lewat ikon kecil di kiri atas
Coba langsung
Fitur ini bisa langsung digunakan di D2 Playground
- Anda dapat membuka blok kode yang disediakan dan mencoba sendiri rendering ASCII
1 komentar
Komentar Hacker News
Halo para developer. Saya ingin membagikan fitur baru yang saya tambahkan pagi ini. Ini masih tahap alpha, dan sudah ada satu issue di GitHub yang masuk. Kalau ingin melewati tulisan blog dan langsung mencobanya, bisa lihat di sini. Contoh yang lebih besar juga bisa dilihat di tautan ini
.txt? Saya sudah memakai ELK untuk diagram d2 sayaDibandingkan mermaid, saya penasaran apa nilai tambahnya. Saya suka desain dan cara kerjanya, tetapi ingin tahu apakah ada alasan praktis untuk pindah dari mermaid. Selain itu, saya merasa alat seperti ini umumnya kurang punya kemampuan untuk menyesuaikan posisi dan ukuran box secara manual dengan nilai x/y pada hasil yang dihasilkan otomatis
Meski sintaks D2 sangat menarik, selama ini saya lebih sering memakai Mermaid karena tooling-nya. Namun, fitur ini terasa benar-benar baru dalam skala besar, dan belum pernah saya lihat di Mermaid. Ini juga membangun keterkaitan yang bagus dengan asciiflow.com
Fitur konversi dari ASCII ini bagus. Namun, saat perlu memperbarui diagram, saya penasaran bagaimana cara mendapatkan source D2 aslinya
Saya selalu lebih suka D2 daripada mermaid, tetapi menurut saya grid layout jadi praktis tidak berguna karena issue berikut ini (issue terkait). Kalau harus menyesuaikan satuan piksel secara manual, rasanya tujuan alat seperti ini jadi hilang
Saya pernah mengelola dan membagikan beberapa kali daftar alat browser-based text-to-diagram. Hal yang baru saya ketahui belakangan adalah bahwa versi online D2 tidak sepenuhnya berjalan murni di browser, melainkan server backend yang menghasilkan diagram. Saya penasaran apakah D2 bisa berjalan sepenuhnya hanya di klien (browser), dan apakah fitur ekstensi yang disebutkan di tulisan ini juga bekerja secara offline
Saya berharap ada repository Python resmi. Saya ingin memakainya di notebook, tetapi saat ini rasanya dipaksa harus memakai databricks, jadi kurang nyaman
Tampilannya sangat keren. Saya juga melihat tulisan tentang dukungan C4 yang pernah Anda unggah sebelumnya! Saya akan segera memeriksanya karena akan butuh pemodelan C4
Fitur yang benar-benar keren. Saya baru pertama kali mendengar D2, tetapi saya sangat suka bahwa diagram bisa dibuat langsung di terminal dan juga dirender dengan indah. Saya akan segera mencobanya
.svglewat server HTTP real-time. Kalau browser dan vim dibuka berdampingan, Anda bisa melihat pembaruan secara langsung. Saya menemukan D2 setahun lalu dan sejak itu memakainya untuk semua diagram sayaextension vim-nya benar-benar luar biasa