- D2 0.7.1 संस्करण में टेक्स्ट डायग्राम को ASCII में render करने की सुविधा जोड़ी गई
- कोड comments में सरल ASCII diagrams का उपयोग करके function या class के flow को समझाया जा सकता है
- डिफ़ॉल्ट रूप से Unicode characters का उपयोग होता है, लेकिन option flag से standard ASCII चुनना संभव है
- यह सुविधा अभी alpha stage में है, इसलिए कुछ styles, special characters और कुछ खास shapes सपोर्ट नहीं होते
- D2 Playground और Vim extension आदि में सीधे ASCII rendering आज़माई जा सकती है
D2 ASCII rendering का परिचय
D2 की latest release (संस्करण 0.7.1) से टेक्स्ट डायग्राम के लिए ASCII output feature जोड़ी गई है।
.txt extension वाली output files अपने-आप ASCII renderer से render की जाती हैं।
इसका उदाहरण D2 Vim extension में देखा जा सकता है, जहाँ .d2 file खोलकर preview window के ज़रिए हर save पर ASCII diagram output की स्थिति real time में देखी जा सकती है.
कोड documentation में उपयोग
ASCII diagrams का सबसे व्यावहारिक उपयोग source code comments में insert करने के लिए है
- किसी छोटे function या class के पास एक simple diagram जोड़ने से, flow को सिर्फ़ शब्दों में समझाने की तुलना में कोड को ज़्यादा सहज रूप से समझने में मदद मिलती है
- Vim extension में D2 code लिखकर चुने गए हिस्से को सीधे ASCII diagram में बदला जा सकता है
Unicode और standard ASCII में चयन
डिफ़ॉल्ट ASCII rendering Unicode box-drawing characters का उपयोग करती है, जिससे output अधिक आकर्षक दिखता है
- अगर maximum portability चाहिए, तो
--ascii-mode=standardoption flag के ज़रिए सामान्य ASCII characters में भी render किया जा सकता है
वर्तमान सीमाएँ
यह ASCII rendering सुविधा अभी alpha stage में है
- कई corner cases, सुधार के बिंदु और bugs मौजूद हो सकते हैं
- वेबसाइट पर bug report या feedback भेजने के लिए प्रोत्साहित किया गया है
मुख्य सीमाएँ
- style support नहीं
- animation, font आदि का ASCII में कोई अर्थ नहीं है
- आगे terminal colors जैसी कुछ सीमित style support पर विचार करने की योजना है
- themes भी supported नहीं हैं
- double-border, multiple आदि भविष्य में सुधार के लिए सूचीबद्ध हैं
- अनियमित spacing
- ASCII में बदलने की प्रक्रिया के दौरान box placement, SVG की तुलना में अनियमित हो सकती है
- जिन्हें render नहीं किया जा सकता
- Markdown, Latex, code जैसे special text का support अभी लागू नहीं है
- images, icons, UML classes, SQL tables आदि render नहीं किए जा सकते
- ऐसे elements को हटाया जाए या placeholder दिखाया जाए, इस पर बाद में निर्णय लिया जाएगा
- कुछ shapes unsupported हैं
- cloud, circle जैसी curved shapes को ASCII में ठीक से दिखाना मुश्किल है
- ऐसे shapes को rectangle से replace किया जाता है और बाएँ ऊपर एक छोटा icon जोड़कर प्रकार अलग दिखाया जाता है
खुद आज़माएँ
यह सुविधा D2 Playground में तुरंत इस्तेमाल की जा सकती है
- दिए गए code block को खोलकर सीधे ASCII rendering का अनुभव किया जा सकता है
1 टिप्पणियां
Hacker News टिप्पणियाँ
नमस्ते, डेवलपर्स। आज सुबह जो नया फीचर जोड़ा है, उसे साझा करना चाहता हूँ। यह अभी alpha चरण में है, और इस पर पहले से एक github issue भी आ चुका है। अगर आप ब्लॉग पोस्ट छोड़कर सीधे देखना चाहते हैं, तो यहाँ देख सकते हैं। थोड़ा बड़ा उदाहरण इस लिंक में भी देख सकते हैं
.txtमें output देने पर यह अपने आप चालू हो जाएगा? मैं अपने d2 diagrams के लिए पहले से ELK इस्तेमाल करता हूँmermaid की तुलना में इसकी value क्या है, यह जानना चाहता हूँ। इसका design और काम करने का तरीका मुझे पसंद है, लेकिन mermaid से migrate करने की कोई ठोस वजह है या नहीं, यह पूछना चाहता हूँ। साथ ही, मुझे लगता है कि ऐसे tools में आम तौर पर auto-generated result में boxes की position और size को x/y values से manually adjust करने की सुविधा कम होती है
D2 syntax काफ़ी आकर्षक है, फिर भी अब तक Mermaid के tooling की वजह से मैं उसे ज़्यादा इस्तेमाल करता रहा हूँ। लेकिन यह फीचर काफ़ी बड़ा और नया लगता है, और Mermaid में मैंने ऐसा नहीं देखा। asciiflow.com से इसका जुड़ाव भी बढ़िया है
ASCII से conversion होने वाली सुविधा अच्छी है। लेकिन जब diagram को update करना हो, तब original D2 source कैसे मिलेगा, यह जानना चाहता हूँ
मुझे D2 हमेशा mermaid से ज़्यादा पसंद आया है, लेकिन मेरे हिसाब से अगले issue की वजह से grid layout लगभग बेकार हो जाता है(संबंधित issue)। अगर pixel units खुद manually मिलाने पड़ें, तो ऐसे tool का मकसद ही खत्म हो जाता है
मैं browser-based text-to-diagram tools की एक सूची maintain करता हूँ और उसे कई बार साझा कर चुका हूँ। हाल ही में पता चला कि D2 का online version पूरी तरह browser में नहीं चलता, बल्कि backend server diagram generate करता है। जानना चाहता हूँ कि क्या D2 केवल client (browser) पर standalone चल सकता है, और क्या इस पोस्ट में बताई गई extension functionality offline भी काम करती है
d2.jsदिखेगा, जो D2 के wasm port को wrap करने वाले wrapper पर चलता है। अभी official release नहीं हुआ है, लेकिन जल्द ही अलग से घोषणा की जाएगीकृपया एक official Python repository बनाइए। मैं इसे notebook में इस्तेमाल करना चाहता हूँ, लेकिन अभी databricks को ज़बरदस्ती इस्तेमाल करना पड़ता है, जो असुविधाजनक है
देखने में बहुत शानदार है। पहले C4 support पर किया गया आपका पोस्ट भी देखा था! मुझे जल्द ही C4 modeling की जरूरत पड़ेगी, इसलिए इसे ज़रूर देखूँगा
यह सच में बहुत शानदार फीचर है। D2 के बारे में पहली बार सुन रहा हूँ, लेकिन यह बात बहुत पसंद आई कि terminal में भी सीधे chart बनाया जा सकता है, और उसे सुंदर तरीके से render भी किया जा सकता है। मैं इसे जल्द ही आज़माने वाला हूँ
.svgको live update करने की सुविधा देता है। अगर browser और vim को साथ-साथ खोलें, तो real-time updates भी देख सकते हैं। मैंने D2 को एक साल पहले खोजा था, और तब से सभी diagrams में उसी का उपयोग कर रहा हूँvim extension वाकई कमाल का फीचर है