推薦一個製做「ASCII 流程圖」工具——Graph Easy

我不止一次看到相似「知乎」網站那種 Console 上直接輸出這種「ASCII 文本」。git

上一次我在借鑑一篇高大上的文章《Serverless實戰:打造我的閱讀追蹤系統》 http://insights.thoughtworks.cn/serverless-combat/ 時,
裏面就有個流程圖:
less

當時就想本身能不能也畫一個「ASCII 文本流程圖」,而且能夠直接放到代碼裏,做爲代碼註釋,提高下「逼格」呢?編輯器

上網一搜,還真有這種經過代碼或者命令行就能實現的工具,而且還能夠直接複製粘貼使用,徹底符合我等程序猿的裝逼需求 —— Graph Easy工具

Graph Easy

Graph::Easy 是一個處理圖形DSL的Perl模塊,它有以下功能:佈局

  1. 提供了一種易懂,可讀性很強的圖形描述語言網站

  2. 一種支持 ASCII Art 的基於網格的佈局器spa

  3. 能夠導出爲 Graphviz, VCG (Visualizing Compiler Graphs), GDL (Graph Description LAnguages) 和 GraphML 格式。命令行

  4. 能夠從 Graphviz, VCG 和 GDL 導入圖像。code

摘自:https://www.gitbook.com/book/weishu/graph-easy-cn/detailsserver

總之,Graph Easy 是一個很 geek 的一個繪圖工具。它基於 Command Line,能夠輕鬆的繪製 ASCII 字符圖,同時還能導出成 HTML,SVG 等多種格式。

安裝 Graph Easy

自用 Mac 筆記本,因此安裝起來簡單,只須要三條命令:

// 1. 
brew install graphviz

// 2. 安裝 cpan,一路「回車」
cpan

// 3. 安裝 Graph Easy
sudo cpan Graph:Easy

使用 Graph Easy

1. 來點簡單的:

$ graph-easy <<< '[a]->[b]'

輸出:

+---+ +---+
| 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 期待您繼續關注

qrcode


也很感謝您能看到這了

qrcode

相關文章
相關標籤/搜索