我不止一次看到相似「知乎」網站那種 Console 上直接輸出這種「ASCII 文本」。git
上一次我在借鑑一篇高大上的文章《Serverless實戰:打造我的閱讀追蹤系統》 insights.thoughtworks.cn/serverless-… 時,
裏面就有個流程圖:
bash
當時就想本身能不能也畫一個「ASCII 文本流程圖」,而且能夠直接放到代碼裏,做爲代碼註釋,提高下「逼格」呢?less
上網一搜,還真有這種經過代碼或者命令行就能實現的工具,而且還能夠直接複製粘貼使用,徹底符合我等程序猿的裝逼需求 —— Graph Easy編輯器
Graph::Easy 是一個處理圖形DSL的Perl模塊,它有以下功能:工具
- 提供了一種易懂,可讀性很強的圖形描述語言
- 一種支持 ASCII Art 的基於網格的佈局器
- 能夠導出爲 Graphviz, VCG (Visualizing Compiler Graphs), GDL (Graph Description LAnguages) 和 GraphML 格式。
- 能夠從 Graphviz, VCG 和 GDL 導入圖像。
總之,Graph Easy 是一個很 geek 的一個繪圖工具。它基於 Command Line,能夠輕鬆的繪製 ASCII 字符圖,同時還能導出成 HTML,SVG 等多種格式。網站
自用 Mac 筆記本,因此安裝起來簡單,只須要三條命令:spa
// 1.
brew install graphviz
// 2. 安裝 cpan,一路「回車」
cpan
// 3. 安裝 Graph Easy
sudo cpan Graph:Easy複製代碼
1. 來點簡單的:命令行
$ graph-easy <<< '[a]->[b]'複製代碼
輸出:3d
+---+ +---+
| a | --> | b |
+---+ +---+
2. 來點長鏈:
% graph-easy <<< '[a]->[b]->[c]->[d]->[e]'複製代碼
輸出:
3. 來個分支:
% graph-easy <<< '[a]->[b]->[c][b]->[d]->[e]'複製代碼
輸出:
4. 來個閉環:
% graph-easy <<< '[a]->[b]->[c]->[b]->[d]->[e]'複製代碼
輸出:
5. 來個合流:
% graph-easy <<< '[a]->[b]->[c][d]->[e]->[b]'複製代碼
輸出:
6. 流程之間須要文字說明的
% graph-easy <<< '[a]->[b]->{label:"true";}[c]->[d]->{label:"FeedBack";}[a]'複製代碼
輸出:
如:結點 b 到結點 c 須要加個條件說明等。
7. 固然,咱們有時候須要從上至下的畫流程圖
% graph-easy <<< 'graph{flow:south;}[上]->[中]->[下]'複製代碼
輸出:
8. 若是流程圖複雜點的時候,咱們能夠將內容存於文件中,而後讀文件畫流程圖
% graph-easy ../test.txt複製代碼
咱們看看「test.txt」的內容:
9. 最後讓咱們實現下上文的流程圖
test.txt 內如:
[Instapaper] {size: 2,7;}
[RSS(Feedly)] -> [Instapaper]{ origin: RSS(Feedly); offset: 2,0;}
[WeChat] -> [Instapaper]{ origin: WeChat; offset: 2,-6;}
[Website] -> [Instapaper]
[IFTTT]{size: 1,7;}
[Instapaper] -> [Diigo]{ origin: Instapaper; offset: 2,-2;}
[Instapaper] -> [IFTTT]{ origin: Instapaper; offset: 2,0;}
[Instapaper] -> [Evernote]{ origin: Instapaper; offset: 2,2;}
[Webtask(Serverless)]{size: 2,7;}
[IFTTT] -> [Webtask(Serverless)]{ origin: IFTTT; offset: 2,0;}
[Webtask(Serverless)] -> [Github]{ origin: Webtask(Serverless); offset: 2,-2;}
[Webtask(Serverless)] -> [ZenHub]{ origin: Webtask(Serverless); offset: 2,2}複製代碼
由於時間關係,沒能很好的調整每一個節點的相對位置和大小,並無徹底和上文一致的效果;但至少能夠畫出「ASCII 流程圖」了,
試着複製到代碼編輯器中,看看註釋效果:
感受還不錯,你也能夠試試哦~~~
「完」
coding01 期待您繼續關注
也很感謝您能看到這了