繁體中文
English 简体中文 繁體中文
Methodox 首頁

Dhole

Dhole 是一種以文字編寫圖表和示意圖的小型語言。你在第一行寫明要畫什麼,在後續各行說明它展示的內容;Dhole 會負責佈局並將其繪製出來。

flowchart Making tea
Thirsty? [start] -> Boil the kettle -> Tea or coffee?
Tea or coffee? -> Steep the tea: tea
Tea or coffee? -> Brew the coffee: coffee
Steep the tea -> Enjoy [end, good]
Brew the coffee -> Enjoy

上面的文字繪製出的結果:一張流程圖,從 Thirsty? 經過 Boil the kettle 到達一個問題 Tea or coffee?,它的兩個答案最終在 Enjoy 處匯合

在互動演示中試一試 —— 在瀏覽器中編寫 Dhole,邊輸入邊檢視繪製結果。

以文字編寫的示意圖寫起來快、改起來容易 —— 加一行,圖中就會為它騰出位置 —— 而且它本身就可以閱讀,無論是在文件、訊息還是版本歷史中。Dhole 通過 Divooka 的繪圖框架進行繪製,因此 Dhole 示意圖和其他圖表並無二致:它可以在節點上預覽,可以應用主題,還可以儲存為任意解析度的圖片、SVG、PDF 或 PowerPoint 投影片。

它能畫什麼

種類 首個單詞 頁面
流程圖 flowchart 流程圖
時序圖 sequence 時序圖
狀態圖 state 狀態圖
類圖 class 類圖
實體圖 entity 實體圖
思維導圖和組織結構圖 mindmap 思維導圖
時間線 timeline 時間線
甘特圖 gantt 甘特圖
餅圖、環形圖、條形圖、折線圖、散點圖和雷達圖 pie, donut, bar, line, xy, radar 圖表
象限圖 quadrant 象限圖
桑基圖 sankey 桑基圖
表格和看板 table, kanban 表格和看板

閱讀順序

  1. 教程 —— 在 Divooka Compute 中繪製你的第一張示意圖,從示例開始,到寫出你自己的文字。
  2. 語言 —— 所有種類共通的內容:第一行、設定、名稱、標籤、特性、顏色、箭頭、縮排、在一段文字中編寫多張示意圖,以及主題。
  3. 上面每個種類各自的頁面,列出了它接受的所有詞。
  4. 問題 —— 當 Dhole 無法按所寫內容讀懂文字時會給出什麼提示,以及如何修正。
  5. 示例 —— Divooka Compute 附帶的 Dhole 示例。
  6. Dhole 與 Mermaid —— 寫給熟悉 Mermaid 的人:哪些相同、哪些不同,以及原因。

網頁上的 Dhole

  • 互動演示 —— 編寫 Dhole,邊輸入邊檢視繪製結果,每個種類都提供一個示例作為起點。
  • 在網頁上使用 Dhole —— 只需從 CDN 引入一個指令碼,即可在任意頁面上繪製 Dhole:使用 <dhole-diagram> 元素、一次性繪製所有 dhole 程式碼塊,或通過 JavaScript。它以 MIT 許可證釋出在 MethodoxTech/MethodoxDhole 中。

Divooka 中的 Dhole

Plotting 工具箱中有三個節點,由 Data Analytics 工作負載提供:

  • Draw Dhole,位於 Dhole 類別中,接受 Dhole 文字並輸出圖表,同時在其 Problems 輸出上將文字中的每個問題作為一行給出。執行之後選中它,即可在 Properties 中檢視圖片。
  • Describe Dhole,位於 Dhole 類別中,接受 Dhole 文字並給出一句話,說明它畫的是什麼 —— A flowchart of 6 steps and 6 arrows. —— 這正是為看不見圖片的人所需的文字說明。
  • Write Dhole,位於 Dhole 類別中、Draw Dhole 旁邊,把文字儲存在節點上。按兩下它會開啟卡片,左側是文字,右側是圖片,每次修改後稍等片刻即會重新繪製,文字中的任何錯誤都列在它們下方。

Write Dhole 的卡片:左側是以文字編寫的看板,右側是繪製結果

Draw Dhole 輸出的圖表可以用在任何能用圖表的地方:傳入 Save Chart 寫出 PNG、SVG、PDF 或 Office 文件,傳入 Set Theme 重新著色,或放進報告中。

程式碼中的 Dhole

包名為 Divooka.Visualization.Dhole,語言規範位於其旁邊的 Dhole Language.md 中。

using Divooka.Visualization.Dhole;

DholeResult result = Dhole.Read(text);       // the figure, every problem, and a sentence of what was drawn
foreach (DholeProblem problem in result.Problems)
    Console.WriteLine(problem);               // Line 3, column 7: 'lots' is not a number. Write a number with a dot for its decimals, such as 12.5.
result.Figure?.SavePng("diagram.png", 192);   // or SaveSvg, SavePdf, SavePptx, ToImage

Figure figure = Dhole.Draw(text);              // throws DholeException only when nothing in the text can be drawn

同樣的文字在任何機器上總是得到同樣的圖片:Dhole 中沒有任何部分會讀取時鐘、區域性設定或隨機數。

參考資料