3 个版本 (重大更改)
0.3.0 | 2023年3月7日 |
---|---|
0.2.0 | 2022年5月24日 |
0.1.0 | 2022年5月10日 |
#3 in #pictures
在 5 个crate中使用
1MB
6K SLoC
包含 (静态库, 4KB) libwinapi_oemlicense.a, (静态库, 4KB) libwinapi_oemlicense.a
Depict
Depict 帮助人们用图片来沟通复杂系统。 (演示)
需要沟通复杂系统的人通常会画带有方框和箭头的图片。
不幸的是,许多人发现很难用传统的工具快速且清晰地绘制这些图片。他们经常在编辑文本标签时难以处理交叉的箭头或保持绘图的各个部分不相互冲突。这些挑战也使得这些图片难以重用和维护。
Depict 可以帮助你
- 简洁地描述流程、系统和操作概念
- 自动绘制美观、可读、可维护的图片
- 提取和重用以前的描述部分
从而帮助你分析和讲述关于此类系统的强大故事。
安装
尝试 depict 的最简单方法是使用已启用 flakes 的 nix 来运行
nix run github:mstone/depict#desktop
这应该会产生一个类似于上述截图所示的窗口。
或者,如果您想在没有 nix 的情况下运行 depict,您需要
- 安装最新的 Rust 编译器,以及您平台所需的任何依赖项
- 使用
cargo
来构建或运行 Depict 的子包之一,例如
cargo run -p depict-desktop
用法/示例
Depict 将系统建模为以部分序表示的交互进程层次结构。每个输入行描述这个顺序中的一个链,这个链将以标签通过此图向下绘制的路径形式表示。因此,输入行
person microwave food: open, start, stop / beep : heat
person food: eat
表示
- 从名为
person
的进程(控制器)到名为microwave
的进程,再到名为food
的进程,在模型中有从person
向下到microwave
,再到food
的路径, - 在
person
和microwave
之间,有三个动作:open
、start
和stop
,以及一个反馈:beep
, - 在
microwave
和food
之间,有一个动作:heat
。 - 最后,
person
和food
之间也存在直接关系,由动作:eat
组成。
语法
描述语言大致由以下组成
产生 | 语法 | |
---|---|---|
定义 | ::= | name : expr |
关系 | ::= | 名称 名称 ... (: 标签 (/ / 标签)?) |
标签 | ::= | 标签... 用于单词标签 |
标签 | ::= | 标签 (, 标签)* 用于多词标签 |
嵌套 | ::= | [ 模型 ] |
备选 | ::= | { 模型 } |
许可协议
本项目采用 MIT 许可协议。
贡献
除非您明确声明,否则您有意提交以供包括在 Depict 中的任何贡献,均应按照 MIT 许可协议进行许可,无需附加条款或条件。
依赖项
~7.5MB
~116K SLoC