3 个版本 (重大更改)

0.3.0 2023年3月7日
0.2.0 2022年5月24日
0.1.0 2022年5月10日

#3 in #pictures


5 个crate中使用

MIT 许可证

1MB
6K SLoC

包含 (静态库, 4KB) libwinapi_oemlicense.a, (静态库, 4KB) libwinapi_oemlicense.a

Depict

Depict 帮助人们用图片来沟通复杂系统。 (演示)

Depict live demo, showing a model of a microwave

需要沟通复杂系统的人通常会画带有方框和箭头的图片。

不幸的是,许多人发现很难用传统的工具快速且清晰地绘制这些图片。他们经常在编辑文本标签时难以处理交叉的箭头或保持绘图的各个部分不相互冲突。这些挑战也使得这些图片难以重用和维护。

Depict 可以帮助你

  • 简洁地描述流程、系统和操作概念
  • 自动绘制美观、可读、可维护的图片
  • 提取和重用以前的描述部分

从而帮助你分析和讲述关于此类系统的强大故事。

安装

尝试 depict 的最简单方法是使用已启用 flakes 的 nix 来运行

nix run github:mstone/depict#desktop

这应该会产生一个类似于上述截图所示的窗口。

或者,如果您想在没有 nix 的情况下运行 depict,您需要

  1. 安装最新的 Rust 编译器,以及您平台所需的任何依赖项
  2. 使用 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 的路径,
  • personmicrowave 之间,有三个动作:openstartstop,以及一个反馈:beep
  • microwavefood 之间,有一个动作:heat
  • 最后,personfood 之间也存在直接关系,由动作:eat 组成。

语法

描述语言大致由以下组成

产生 语法
定义 ::= name : expr
关系 ::= 名称 名称 ... (: 标签 (/ / 标签)?)
标签 ::= 标签... 用于单词标签
标签 ::= 标签 (, 标签)* 用于多词标签
嵌套 ::= [ 模型 ]
备选 ::= { 模型 }

许可协议

本项目采用 MIT 许可协议

贡献

除非您明确声明,否则您有意提交以供包括在 Depict 中的任何贡献,均应按照 MIT 许可协议进行许可,无需附加条款或条件。

依赖项

~7.5MB
~116K SLoC