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

Dhole 與 Mermaid

Mermaid 證明了以文字編寫示意圖是值得的,Dhole 也從中借鑑良多:它所涵蓋的種類,以及它最好的那些想法。不過,與 Mermaid 相像並不是 Dhole 的目標,Mermaid 文字也不是 Dhole 文字。本頁寫給熟悉 Mermaid、想知道哪些內容可以沿用的人。

Dhole 借鑑了什麼

  • 種類。 流程圖、時序圖、狀態圖、類圖和實體圖、思維導圖、時間線、甘特圖,以及餅圖、XY 圖、象限圖和桑基圖。
  • 事物在首次命名處建立,以及用 --> 表示虛線箭頭。
  • 用 * 表示狀態機的開始和結束,以及複合狀態。
  • 將時序圖的塊繪製為框 —— loop、alt/else、opt、par/and、critical、break。
  • 在其他任務之後開始的甘特圖任務,以及里程碑。

Dhole 能讀取的 Mermaid 寫法

只要某種 Mermaid 寫法不會被誤解,Dhole 就按照 Mermaid 的含義來讀取它:

Mermaid Dhole 將其讀作
graph TD, flowchart LR 採用該方向的流程圖
stateDiagram-v2, [*] 狀態圖,及其開始或結束
時序圖中單獨一行的 autonumber numbers: on
alt if
餅圖中的 "Dogs" : 30 一個扇區
sankey-beta,以及 Coal, Power plant, 25 桑基圖,以及一條流
quadrant-1 至 quadrant-4 各象限,按 Mermaid 的編號方式編號

實體圖會把 Mermaid 用字元畫出的鴉腳符號讀作它們所表示的計數:||--o{、|o--|{、}|..|| 等。

Dhole 在哪些地方寫法不同,以及原因

  • 所有種類只有一種書寫標籤的方式。 Mermaid 根據種類不同,有四種書寫箭頭標籤的方式 —— A -->|yes| B、A -- yes --> B、A ->> B: yes、A : yes。Dhole 只有一種寫法:寫在行尾的冒號之後,A --> B: yes。寫在豎線之間的標籤會被指出,並給出 Dhole 的寫法。
  • 用單詞表示形狀和顏色。 Mermaid 用括號來畫形狀 —— [(db)]、{{hex}}、[/io/]、((circle)) —— 這些需要專門學習,回頭閱讀也很困難。Dhole 直接說出形狀的名稱:[database]、[hexagon]、[io]、[circle]。顏色也以同樣方式命名,[green],並且使用主題的顏色而非 CSS。
  • 縮排在任何地方都表示巢狀。 Mermaid 用 end 或花括號來結束子圖、塊、類的主體和複合狀態。Dhole 全部用縮排來結束,正如 Mermaid 自己的思維導圖已經做的那樣。
  • 問題會說明位置和修正方法。 Mermaid 遇到第一個錯誤就會停止,並給出解析器的訊息。Dhole 會繼續讀下去,儘可能繪製,並用文字說明每個問題及其所在的行和列。
  • 處處都是同樣的圖片。 同樣的文字在任何機器上都畫出同樣的圖片,儲存在文件中或由測試檢查的圖片都需要這一點。

Dhole 省略了什麼,以及原因

  • 樣式語言 —— classDef、style、linkStyle、%%{init}%% 和 CSS。它們讓示意圖的外觀變成了第一個程式內部的第二個程式。Dhole 示意圖的外觀就是它的主題,文字只說明其中事物的含義。
  • 標籤中的 HTML 和 Markdown,以及點選處理程式。 圖片不是網頁,Dhole 的每種輸出 —— PNG、SVG、PDF、投影片 —— 都以同樣的方式繪製同樣的文字。
  • Git 圖、C4、需求圖、使用者旅程圖、塊圖、資料包圖和架構圖,以及 ZenUML。 它們要麼是有更好的專用工具的小眾表示法,要麼是換了一套詞彙的流程圖,而且每一種都會增加只在一個種類中有效的詞。
  • Mermaid 僅用於流程圖的箭頭 —— -.->、--o、--x、~~~,以及用額外短橫線加長的連線。Dhole 只有一種虛線箭頭 -->,以及一種無箭頭的線 --;其他寫法會被指出,並列出流程圖支援的箭頭。

Dhole 增加了什麼

  • 表格、看板和雷達圖,源自最早的 Dhole。
  • 在一段文字中編寫多張示意圖,並排繪製。
  • 甘特圖可以跳過週末和節假日,並在相互等待的任務之間畫出連線。
  • 可以向下展開為組織結構圖的思維導圖。
  • 用一句話說明每張圖片展示的內容,為看不見圖片的人提供幫助。
  • 繪圖框架的輸出和主題 —— 以及作為主題的編輯器自身調色盤。

遷移一張 Mermaid 流程圖

graph TD
    A[Christmas] -->|Get money| B(Go shopping)
    B --> C{Let me think}
    C -->|One| D[Laptop]
    C -->|Two| E[iPhone]

變為:

flowchart
direction: down
A: Christmas
B: Go shopping [round]
C: Let me think [diamond]
A -> B: Get money
B -> C
C -> D: One
C -> E: Two
D: Laptop
E: iPhone

短名稱保持不變,每個都在單獨一行上指定其標籤;形狀被說出名稱;標籤寫在冒號之後;箭頭使用 ->,即 Dhole 的實線箭頭,因為 Mermaid 的 --> 是實線箭頭,而 Dhole 的這個箭頭是虛線箭頭。