1. 程式人生 > >markdown 畫流程圖

markdown 畫流程圖

一直在用markdown(不得不說markdown語法真的太強大太簡潔了,效果也太優美,沒學過markdown語法的可以自己學下)寫東西,知道用markdown可以畫出來很性感的流程圖,遂決定學下如何用markdown來畫流程圖。

程式碼

```flow
st=>start: Start
op=>operation: Your Operation
cond=>condition: Yes or No?
e=>end
st->op->cond
cond(yes)->e
cond(no)->op

效果

Created with Raphaël 2.1.2
StartYour OperationYes or No?Endyesno

說明

這樣幾行簡單的程式碼就生成了一個優雅的流程圖。
流程圖大致分為兩段,第一段是定義元素,第二段是定義元素之間的走向。

定義元素的語法

  • tag=>type: content:>url
    tag就是元素名字,
    type是這個元素的型別,有6中型別,分別為:
  • start # 開始

  • end # 結束

  • operation # 操作

  • subroutine # 子程式

  • condition # 條件

  • inputoutput # 輸入或產出

  • content就是在框框中要寫的內容,注意type後的冒號與文字之間一定要有個空格。

  • url是一個連線,與框框中的文字相繫結

連線元素的語法

用->來連線兩個元素,需要注意的是condition型別,因為他有yes和no兩個分支,所以要寫成

c2(yes)->io->e
c2(no)->op2->e

實際應用

下邊獻上我的拙作,這是一個爬取某網站的商品評論資料,然後進行情感分析的小專案,有四個模組:獲取待爬取商品id,爬取代理,爬取評論,情感分析

程式碼

```flow
st=>start: Start|past:>http://www.google.com[blank]
e=>end: End:>http://www.google.com
op1=>operation: get_hotel_ids|past op2=>operation: get_proxy|current sub1=>subroutine: get_proxy|current op3=>operation: save_comment|current op4=>operation: set_sentiment|current op5=>operation: set_record|current cond1=>condition: ids_remain空? cond2=>condition: proxy_list空? cond3=>condition: ids_got空? cond4=>condition: 爬取成功?? cond5=>condition: ids_remain空? io1=>inputoutput: ids-remain io2=>inputoutput: proxy_list io3=>inputoutput: ids-got st->op1(right)->io1->cond1 cond1(yes)->sub1->io2->cond2 cond2(no)->op3 cond2(yes)->sub1 cond1(no)->op3->cond4 cond4(yes)->io3->cond3 cond4(no)->io1 cond3(no)->op4 cond3(yes, right)->cond5 cond5(yes)->op5 cond5(no)->cond3 op5->e

效果圖

Created with Raphaël 2.1.2Startget_hotel_idsids-remainids_remain空?get_proxyproxy_listproxy_list空?save_comment爬取成功??ids-gotids_got空?ids_remain空?set_recordEndset_sentimentyesnoyesnoyesnoyesnoyesno

這個流程圖有個問題,我希望ids_remain的兩個條件都為空,但是markdown語法沒法實現我這需求(不知道我這需求是不是有毛病),只能先這樣畫著了