#output #cli-tool #style #convert #stdin #line #list

app marquee

将标准输入转换为“滚动字幕”风格的输出

5 个版本 (稳定)

1.1.2 2023年3月28日
1.1.1 2023年3月27日
1.0.0 2023年3月7日
0.1.0 2023年3月7日

#328 in 命令行界面

Apache-2.0

3MB
162

滚动字幕

Crates.io

marquee 是一个 CLI 工具,它将输入的每一行转换为“滚动字幕”风格的输出(以下为示例)。滚动字幕设计用于用户界面输出,尽管也可以使用 marquee -ld0 创建滚动字幕输出列表。

GIF of marquee usage

安装

使用 Cargo 安装

cargo install marquee

用法

echo "Hello World" | marquee

查看 marquee --help 了解高级用法。

--json

如果指定了 --json 标志,JSON 值如下

{
    "content": "required string", // The content of the string that will be rotating
    "prefix": "optional string",  // The prefix before the string
    "suffix": "optional string",  // The suffix after the string
    "rotate": "optional boolean"  // If the string should rotate (default: true)
}

注意:如果同时在 JSON 中指定了 --prefixprefix,或者 --suffixsuffix,则输出将采用以下形式 {global_prefix}{prefix}{content}{suffix}{global_suffix}

待办事项

以下是我计划中的待办事项(欢迎创建问题或 PR 来实现这些功能)

  • 更好的文档
  • 将 JSON 作为功能而不是默认启用
    • 这可能需要保留 --json 参数,但会提供一个有用的消息,类似于 exa--git 参数。
    • 理想情况下,将完全删除 serde
  • 将所有 unwrap/expect 转换为正确处理错误
  • 为 JSON 输入添加更多功能(我不完全确定这些)
    • speed: u64 - 消息应该旋转的速度
    • parts: &[String] - 应该单独旋转的部件,我认为这需要进行相当大的重写才能做得好
  • 更多命令行配置
  • 可能需要一个标志/子命令,基本上运行一个更好的marquee -ld0版本,它在输入的每一行上工作。
    • 这在脚本/管道中很好用,我们不想直接输出给用户,但可能希望将其保存到文件中。
    • 使用marquee -ld0可以实现这一点,但这不是很优雅,因为它不适用于多行。
    • 理想情况下,我们还希望它不需要多个线程。
    • 也许我们可以创建一个函数,该函数返回一个用于所有应用的迭代器,类似于MarqueeIter::new(line: String),它将是一个Iterator<Item = String>,其中.next()计算下一个字符串。如果未设置--no-loop,则这将无限进行。

依赖关系