#repl #shell #terminal #cli

revolver

用于构建 REPL 应用程序的库

2 个不稳定版本

0.2.0 2022 年 12 月 22 日
0.1.0 2022 年 11 月 24 日

#53#repl


用于 sequent-repl

MIT 许可证

80KB
2K SLoC

Revolver

用于构建 REPL 应用程序的库。

Crates.io docs.rs Build Status codecov

概念

命令

Command 特征是可执行命令的规范 — REPL 应用的 'execute' 部分。一个命令通常伴随着一个 NamedCommandParser 实现来将命令字符串转换为 Command 对象。

CommandNamedCommandParser 是你必须实现的两个特征。其余的都是配置。

指挥官

Commander 使用预先配置的 NamedCommandParser 映射将用户输入(通常是来自终端界面的行)解码为动态的 Command 对象。

内置命令

Revolver 随带两个有用的内置命令,可以直接使用。

  • help — 一个自帮助指南,概述了可用的命令及其用法。
  • quit — 终止 REPL。 (它只退出循环;它不会终止应用程序。)

这些命令是可选的,这意味着你必须明确将它们的解析器包含在您的 Commander 中才能启用它们。

终端

Terminal 特征代表与用户的基于文本的界面。它实现了 REPL 应用的 'read' 和 'print' 部分。

Revolver 当前捆绑了两个 Terminal 实现

  • Streaming — 使用 InputOutput 特征通过 I/O 流组合的终端设备。已提供用于 stdinstdout 流的适配器。可以通过提供自定义闭包来编写适配器以与非标准流接口。
  • Mock — 一种模拟终端设备以提供输入、捕获输出并执行各种断言的方法。

循环器

Looper 是一种基于连续用户输入迭代运行命令的机制。它实现了 REPL 应用的 'loop' 部分。

入门

添加依赖

cargo add revolver

示例

请参阅 examples/calculator.rs 以获取简单的计算器 REPL 示例。

依赖关系

~0.5–1MB
~21K SLoC