#终端着色 #颜色 #终端 #测试

termstyle

创建并测试终端应用程序中的文本样式和格式

3 个版本

使用旧的 Rust 2015

0.1.2 2018年2月12日
0.1.1 2018年1月10日
0.1.0 2018年1月10日

#883命令行界面

每月34 次下载

MIT/Apache

43KB
315 代码行

termstyle 是一个库,旨在使构建(并测试)格式化和样式化的命令行应用程序变得简单。它支持以下“元素”

  • 样式化文本
    • 斜体
    • 粗体
    • 颜色
  • 表格:由具有相同宽度列的样式化文本组成

可以通过将标记推送到向量并在之后调用 paint() 来程序性地构建文本,或者通过解析一个 yaml 文件。这允许你轻松地为你的命令行应用程序编写单元测试。

示例

给定以下配置(用 yaml 编写)

- {t: "-- EXAMPLE --\n", b: true}
- "This is a regular string with a newline\n"
- "This does not have a newline, but "
- {t: "this is red", c: red}
- ", but this is NOT red!\n"
- "Bold is easy like this: "
- {t: "see I'm bold!!\n", b: true}
- And so is multiple settings
- # long-form
  t: |

      bold AND green!
      and even multiple lines :) :)
  b: true
  c: green
- ["\nyou can group multiple text items ", {t: "on one line!", b: true}]
- "\nGrouping things in one line is necessary for tables\n"
- "Notice that some cells are grouped and some are not.\n\n"
- [{t: "# Table", b: true}, "\n"]
-
  table:
  - [["header ", {t: "col1", b: true}] ,"| header col2"]
  - ["row col1", ["| ", {t: "row col2", c: green}]]

使用以下代码来渲染它

let els = termstyle::from_str(serde_yaml::from_str, example).unwrap();
termstyle::paint(&mut ::std::io::stdout(), &els).unwrap();

渲染结果如下

rendered

您还可以使用库提供的类型创建“元素流”。有关更多信息,请参阅 库文档

许可证

源代码根据以下之一许可

任选其一。

除非你明确声明,否则你提交给作品作为 Apache-2.0 许可证定义的任何有意贡献,都应如上双重许可,不附加任何额外条款或条件。

依赖项

~0.8–1.5MB
~26K SLoC