#json-file #mdbook #post #collect #data #title #builds

bin+lib mdbook-collector

一个 mdbook 预处理器,从每篇文章中收集 json/yaml/toml 数据,并构建一个 json 文件

2 个不稳定版本

0.2.0 2024年4月9日
0.1.0 2024年4月8日

738文本处理

每月下载量 24

MIT 许可证

19KB
220

mdbook-collector

一个 mdbook 预处理器,从每篇文章中收集 json/yaml/toml 数据,并构建一个 json 文件

安装

cargo install mdbook-collector

使用 (v0.2.0)

在文章的 markdown 文件中包含

<!-- collect
{
  "data": {
    "type": "json",
    "keywords": ["json", "collect"]
  }
}
-->

然后预处理器将解析每篇文章并构建一个综合的 json 文件,该文件是一个映射,其键是每篇文章的 URL 路径,其值是解析数据的 子映射。每篇文章的标题也将添加到子映射中,键名为 "title"。

{
  "post/ex/url": {
    "title": "Title of this post",
    "data" {
      "type": "json",
      "keywords": ["json", "collect"]
    }
  },
  ...
}
  • 请注意,在 v.0.1.0 中,此映射的键是文章的名称(标题)。从 v.0.2.0 开始,每篇文章的 URL 路径是键。标题也将添加到每个子映射中。

这个新创建的 json 文件可用于各种目的:例如,在您的附加 .js 文件中。

确保每篇文章的原始 json 数据可以解析为 "映射" 结构。例如,以下内容将无法解析,因此将被忽略

<!-- collect
  "data": {
    "type": "json",
    "keywords": ["json", "collect"]
  }
-->

如果 Json 的严格性和无注释性让您感到困扰,请使用 yaml 或 toml 选项!

配置

book.toml 中的配置示例。以下是默认设置

[preprocessor.collector]
input_type = "json"
marker = "collect"
save_path = "collect.json"
add_title = true

input_type

输出文件始终为 .json 格式。但是,您可以在 jsonyamltoml 中选择要解析的输入数据的格式。

例如,使用 toml

<!-- collect
  [data]
  type = "toml"
  keywords=["toml", "collect"] # any comment
-->

预处理器依赖于 serde_json 用于 json 选项,serde_yaml 用于 yaml,以及 toml 用于 toml。yaml 和 toml 选项不仅解析自身格式,还解析 json 格式,因为它们的依赖库是这样工作的。

marker

预处理器尝试解析每个帖子源文件中位于第一个 <!-- collect--> 之间的任何字面量。(<!-- collect 替代 <!-- collect 是可以的。)

您可以更改标记字面量。默认是 collect

save_path

新创建的json文件将保存在一个路径中,该路径结合了书籍的 src 目录和给定的 save_path

它必须保存在 src 目录下,以便自动复制到构建目录。

🪧 请注意,mdbook serve 监视 src 目录。一旦您启动 mdbook serve 命令,然后更改 src 目录下的任何内容,收集器将重新构建json文件,这会导致监视和服务的重复循环。为了避免这种情况,在书籍的根目录中创建一个 .gitignore 文件,并添加要构建的json文件的名称。

add_title

收集器创建一个json映射,其键是每个帖子的URL路径,其值是从每个帖子源文件解析的子映射。

收集器在子映射中插入更多信息:每个帖子的标题作为值,“title”作为键。如果您不想添加标题信息,设置 add_title 为 false。

依赖关系

~13–24MB
~350K SLoC