1 | ➜ graph-easy foo.txt |
使用Graph Easy能帮助你绘出geek风满满的Ascii字符流程图。
入门实例
上面看到的一个简单流程图,用的代码仅仅是下面一行:
1 | [写完论文] --> [守望先锋],[吃饭],[看电影] |
使用ASCII字符图的好处很多:
- 在项目说明README中避免了图例不能插入到文档中
- 有效减少文档的大小
- 便于进行版本控制
- 效果很炫目很骚(´▽`)
如何使用Graph::Easy生成ASCII字符图
Graph Easy 的安装流程有些许繁杂,放在后面叙述。[不行,我要马上跳转去看!]
使用
直接把代码写在一个txt文件中,然后用终端graph-easy foo.txt
调用即可。
基本语法
基本款图
代码:[a] -> [b] -> [c] -> [a]
效果如下:
1 | +-------------------+ |
带注释的基本款图
代码:[a] - text -> [b] - Or2.in -> [c]
效果如下:
1 | +---+ text +---+ Or2.in +---+ |
注意要有空格噢!
各种样式的边
graph-easy支持这几种风格:
1 | -> 实线 |
高阶语法
高阶语法的关键在于引入了
属性
这个概念,从而进一步个性化显示。
属性在代码中用键值对{attribut:value}
来表示,面将介绍几个我认为比较常用的属性设置。
设置边的流向
方法是{flow:south}
,方向可以是north/south/east/west
(北/南/东/西),也可以是left/right/up/down
(左/右/上/下),任君选择~
代码是[a]{flow:south}->[b]->[c]
效果如下:
1 | +---+ |
边流向可以设置针对某一个框图发出的边做设置,也可以设置
全局
边流向,代码是在文件第一行输入graph{flow:south;}
设置款图的“宽度”
方法是{rows:3}
代码是[a]{rows:3}->[b]->[c]->[a]
效果如下:
1 | +---+ +---+ +---+ |
如果被设定的款图实际上用不到这么多的宽度,他就不会如愿变成你想要的大小噢,你可以自己动手尝试
[a]{rows:3}->[b]->[c]
设置用于分组的环绕线框图
方法是(backend: [a]->[b])
代码是
1 | (backend: [a]->[b]) |
效果图如下:
1 | + - - - - - - - - - - -+ |
设置无边框的框图
方法是{border:none}
代码是[a]{border:none}->[b]->[c]{border:none}
效果如下:
1 | +---+ |
设置虚线框图
方法是{border:1px dotted black}
代码是[a]->[b]{border:1px dotted black}->[c]
效果如下:
1 | +---+ ..... +---+ |
注意点
- 属性中
flow
与rows
不能同时使用,不然会失效 - 兼容的使用多属性,每个属性需要用
;
隔开,如[a]{rows:3;border:1px dotted black}
- Graph::Easy的语法其实有点类似HTML,会忽略空格。所以高阶方法3与后面这段代码等效=>
(backend: [a]->[b])[b]->[c]
- 一对多的情况下,多方的每一方排列顺序,
用户
无法决定,他是按照多方中每一方的首字母顺序来排列,所以这是下面实例多方的每一方前头加数字的原因(本人能力有限,似乎没有找到更好的解决方法)
来一个高阶实例
描述一下OAuth2.0的授权认证流程图。
代码如下:
1 | [ Client ]{rows:8;} -- (A) Authorizatoin Request --> [ 1.Resource Owner ]{rows:2;} |
效果如下:
1 | +--------+ (A) Authorizatoin Request +------------------------+ |
Graph::Easy输出中文格式有误解决方案
有大神道出了输出中文格式有误的原因:
UTF8 中,汉字是 3 字节,而对于显示来说,等宽字体的汉字是 2 倍普通字母宽。这样在排版时,你必须知道一个字符串在视觉上是多宽,才可能用 ascii 字符拼接出正确的方框和连线。
——云风
具体方法是在编译前修改@app/lib/Graph/Easy.pm
&&@app/lib/Graph/Easy/Node.pm
这2个文件给它打上补丁。
1 | diff --git a/lib/Graph/Easy.pm b/lib/Graph/Easy.pm |
要了解更多,请直接围观云风博客相关文章。
Graph::Easy安装方法
主要介绍在MacOS
系统上安装方法,本文模拟安装Graph::Easy版本为0.76。
- 首先在Graph::Easy的官方镜像点CPAN下载下载安装包
Graph-Easy-0.76.tar.gz
。 - 解压安装包=>
tar -xzf Graph-Easy-0.76.tar.gz
。 - 进入到解压的目录中
cd Graph-Easy-0.76
。 - 如果要
解决中文输出问题
,请把上面提到的patch文件更新到包中的指定文件中。 - 运行
perl Makefile.PL
来创建make文件,同时执行make test
来运行测试套件。 - 如果所有的测试都PASS通过了,以超管理员权限执行编译:
sudo make install
。 - 完成安装了。可以创建一个写好的foo.txt并使用命令
graph-easy foo.txt
来测试效果。
还有没有傻瓜一点的方法?
有的有的,你可以使用一个可视化
的ASCII字符图制作网站,这个网站也是个厉害得飞起的神奇。
我在了解这款Graph::Easy之前就是一直使用asciiflow来制作字符图的,可以说相当容易上手和保存。
但是不得不说,用过了Graph::Easy之后就对它爱不释手了,原因不仅仅因为熟悉语法后制图速度更快,最讨我欢喜的是Graph::Easy能够帮我自动排版布局,个性化设置也符合程序员思维,让我更加专注在内容的编辑上。希望你也会喜欢哈哈哈