我不止一次看到相似「知乎」網站那種 Console 上直接輸出這種「ASCII 文本」。git
上一次我在借鑑一篇高大上的文章《Serverless實戰:打造我的閱讀追蹤系統》 http://insights.thoughtworks.cn/serverless-combat/ 時,
裏面就有個流程圖:
less
當時就想本身能不能也畫一個「ASCII 文本流程圖」,而且能夠直接放到代碼裏,做爲代碼註釋,提高下「逼格」呢?編輯器
上網一搜,還真有這種經過代碼或者命令行就能實現的工具,而且還能夠直接複製粘貼使用,徹底符合我等程序猿的裝逼需求 —— Graph Easy工具
Graph::Easy 是一個處理圖形DSL的Perl模塊,它有以下功能:佈局
提供了一種易懂,可讀性很強的圖形描述語言網站
一種支持 ASCII Art 的基於網格的佈局器spa
能夠導出爲 Graphviz, VCG (Visualizing Compiler Graphs), GDL (Graph Description LAnguages) 和 GraphML 格式。命令行
能夠從 Graphviz, VCG 和 GDL 導入圖像。code
摘自:https://www.gitbook.com/book/weishu/graph-easy-cn/detailsserver
總之,Graph Easy 是一個很 geek 的一個繪圖工具。它基於 Command Line,能夠輕鬆的繪製 ASCII 字符圖,同時還能導出成 HTML,SVG 等多種格式。
自用 Mac 筆記本,因此安裝起來簡單,只須要三條命令:
// 1. brew install graphviz // 2. 安裝 cpan,一路「回車」 cpan // 3. 安裝 Graph Easy sudo cpan 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 期待您繼續關注
也很感謝您能看到這了