#markdown #command-line-tool #word #document #configurable #counting #text

bin+lib count-md

一个简单的、可配置的命令行工具和 Rust 库,用于在 Markdown 文档中进行 Unicode、Markdown 和 HTML 感知的单词计数

1 个不稳定版本

0.1.0 2024 年 8 月 2 日

#823文本处理

Download history 37/week @ 2024-07-27 54/week @ 2024-08-03 2/week @ 2024-08-10

93 每月下载量

BlueOak-1.0.0

27KB
730

count-md

一个简单的、可配置的命令行工具和 Rust 库,用于在 Markdown 文档中进行 Unicode、Markdown 和 HTML 感知的单词计数。

也就是说,这个工具将以 Unicode 感知的方式正确地计数单词,而不错误地包含 Markdown 语法或 HTML 标签。它可以包含或排除如块引用、脚注、代码块等内容,并且自带合理的默认设置!

示例

您可能有一个包含如下内容的文件

# Title

This is some text!

> Here is a quote from someone else.

Here is more text.

如果您想了解非引号单词的数量,包括标题但不包括块引用,您只需运行 count-md <文件路径> 即可,它将友好地报告总共有 9 个单词。相比之下,wc -w 将报告有 18 个单词:当然包括块引用,但它还包含了标题的 # 和块引用的 >,这两者都不是所需的!

状态

支持包含或排除以下 Markdown 功能

  • 标题
  • 块引用
    • 嵌套块引用
    • 注意[^admonitions]
  • 代码块
  • 内联代码
  • 块 HTML 🚧 部分
  • 脚注
  • 表格
  • 数学

[^admonitions]: 注意不是块引用,但在这里列出是因为它们的语法方式。

这里的核心功能可以用作 Rust 库[^c]。有两个主要入口点

  • count: 接受一个 &str 并使用默认选项集进行计数,相当于在命令行上以零选项运行 count-md

  • count_with_options: 接受一个 &str 和一个 Options 值(一个位掩码),允许您直接配置每个选项。对于运行 count-md 并具有一些选项的等效操作,使用 Options::DEFAULT 并结合其他标志

    • 直接使用位掩码:Options::DEFAULT | Options::IncludeBlockquotes

    • 使用由 bitflags 库提供的方法,insertremove

      let mut options = Options::DEFAULT;
      options.insert(Options::IncludeBlockquotes);
      options.remove(Options::IncludeHeadings);
      

更多详情请参阅文档!

[^c]: 未来,我可能也会提供 C 绑定,但在做之前还需要做相当多的审核!

依赖项

~5–16MB
~153K SLoC