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 的這個箭頭是虛線箭頭。