1. windows上安装GraphEasy
从asciiflow了解到这个工具,因为之前一看windows上好像并没有什么好用的工具来画ascii流程图,偶然找到在线asciiflow,越用越费劲,一顿翻,找到了GraphEasy,搞吧,发现好像安装没那么容易,各个教程都是千篇一律……关于windowns上的安装提及甚少!!对于一个敢于尝试(作死)的我,哼!妈的,就要弄你!不断摸索,终于搞定了U•ェ•*U,下面是教程(PS:快夸我):
- 安装perl5;
- 下载工具包Graph-Easy-0.76.tar.gz并解压;
- 进入上述解压目录,执行grap easy的编译:perl Makefile.PL(不要在gitBash中操作,会出现无法定位ExtUtils::MakeMaker的错误,务必在CMD中执行);
- 启用
cpan
脚本:perl -MCPAN -e shell
; - 安装Graph::Easy:
install Graph::Easy
,若需要推出直接exit
回车即可; - 验证安装成功:
graph-easy -version
;
2. 关于语法的简单摸索
2.1 创建文件
下面的语法都是基于 Graph::Easy::Parser 的(使用Perl驱动也是的,只是觉得Graph::Easy::Parser更加方便)。
【节点】
节点使用[node-name]
方式表示,主要有2种:
1.单节点:即单个节点,用[xx]
表示,比如[a]
那出来的就一个节点,如下:
+---+
| a |
+---+
2.复合节点:由多个节点组成的一个符合节点,用[xx | xx | xx]
表示,节点之间使用|
分隔,比如[a | b | c | d]
,如下:
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
【连接线】
节点之间使用连接线进行连接,连接线有多种,下面是一些常用的连接线:
1.单向箭头:使用->
表示,比如[a] -> [b]
(如果有多个节点),输出如下:
+---+ +---+
| a | --> | b |
+---+ +---+
2.无方向连接线:使用--
表示,比如[a] -- [b]
,输出如下:
+---+ +---+
| a | --- | b |
+---+ +---+
3.双横线单向箭头:使用==>
表示,比如[a] ==> [b]
,输出如下:
+---+ +---+
| a | ==> | b |
+---+ +---+
4.点横线单向箭头:使用..>
表示,比如[a] ..> [b]
,输出如下:
+---+ +---+
| a | ..> | b |
+---+ +---+
5.波浪线单向箭头:使用~~>
表示,比如[a] ~~> [b]
,输出如下:
+---+ +---+
| a | ~~> | b |
+---+ +---+
6.横线、点单向箭头:使用.->
表示,比如[a] .-> [b]
,输出如下:
+---+ +---+
| a | .-> | b |
+---+ +---+
7.双向箭头:使用<->
表示,比如[a] <-> [b]
,输出如下:
+---+ +---+
| a | <--> | b |
+---+ +---+
8.双横线双向箭头:使用<=>
表示,比如[a] <=> [b]
,输出如下:
+---+ +---+
| a | <==> | b |
+---+ +---+
【注解】
1.文档注释:在输入文件中同样支持注释(和普通配置文件的注释没啥区别),使用#
开始,比如下面的3个注解:
# top
[a] <=> [b] # mid
# test
2.连接线注解:通常在节点之间连线时会在上面加一些说明表示行为说明,可以在连接线标签后面追加{label: "说明"}
(建议加上双引号,如果注解中有空格的话可能会造成阅读上的困难),比如[a] -- {label: "this is test line"} [b]
,效果如下:
+---+ this is test line +---+
| a | -------------------- | b |
+---+ +---+
【其他设置】
设置节点颜色,这里需要生成html格式才能看到效果,比如:
node { color: red; }
[ A ] { class: foo; color: inherit; }
建议在不断的选区根节点操作,这样逻辑清晰一点,内部尽量减少中文的使用,最后一个综合示例(VOD的简单概念的组合):
# Template group
[Template group] -> [name]
[Template group] -> {label: "Single Template"} [Template]
# Template
[Template] -> [video]
[Template] -> [audio]
[Template] -> [watermark]
# video
[video] -> [definition]
[video] -> [bitRate]
[video] -> [encode]
# 输出
+-----------+ +------------+
| watermark | | encode |
+-----------+ +------------+
^ ^
| |
| |
+----------------+ Single Template +-----------+ +------------+ +---------+
| Template group | -----------------> | Template | --> | video | --> | bitRate |
+----------------+ +-----------+ +------------+ +---------+
| | |
| | |
v v v
+----------------+ +-----------+ +------------+
| name | | audio | | definition |
+----------------+ +-----------+ +------------+
2.2 生成输出文件
从文件生成对应的图,基本语法为graph-easy [options] [inputfile [outputfile]]
,有如下功能:
【指定输入文件】
# 根据当前目录下的test.txt文件生成ASCII图
graph-easy test.txt
# 也可以通过--input指定
graph-easy --input=test.txt
上述的命令是等价的。
【指定输入文件的格式】
可以用--form
指定输入文件的格式,如不指定则自动检测,合法格式有:
格式 | 说明 |
---|---|
graphviz | the DOT language |
txt | Graph::Easy text |
vcg | VCG text |
gdl | GDL (Graph Description Language) text |
也可以使用--from_格式名
的形式(如--form_txt
)指定。
【指定输出文件】
输出文件是可以不指定的,会直接在控制台(DOS窗口)中展示:
# 根据当前目录下的test.txt文件生成ASCII图到test-out.txt中
graph-easy test.txt test-out.txt
# 也可以通过--output指定输出文件为test-out.txt文件
graph-easy test.txt --output=test-out.txt
【指定输出样式】
GraphEasy支持的样式主要有,通过--as=xxx
指定或者直接通过--样式
(如--ascii
)或--as_样式名
(如as_ascii
)来指定:
格式 | 说明 |
---|---|
ascii | ASCII art rendering |
boxart | Unicode Boxart rendering |
html | HTML |
svg | Scalable Vector Graphics |
graphviz | the DOT language |
dot | alias for “graphviz” |
txt | Graph::Easy text |
vcg | VCG (Visualizing Compiler Graphs - a subset of GDL) text |
gdl | GDL (Graph Description Language) text |
graphml | GraphML |
默认格式是由输出文件的后缀名决定的,如果没有后缀名默认就是ascii
。
【指定渲染输出文件的程序】
--renderer
选项(默认是dot
)可以指定渲染的程序,支持下面的:
格式 | 说明 |
---|---|
bmp | Windows bitmap |
gif | GIF |
hpgl | HP-GL/2 vector graphic |
jpg | JPEG |
pcl | PCL printer language |
png | PNG |
ps | Postscript |
ps2 | Postscript with PDF notations (see graphviz documentation) |
tga | Targa bitmap |
tif | TIFF bitmap |
【附】
其他的一些设置及使用参照Graph-Easy。