3 个版本
0.1.2 | 2023年4月20日 |
---|---|
0.1.1 | 2021年12月2日 |
0.1.0 | 2021年12月2日 |
#877 in 文本处理
10,052 每月下载量
用于 3 crates
15KB
55 代码行
mdbook-preprocessor-boilerplate
mdbook 预处理器的样板代码。
处理 CLI,检查渲染器是否受支持,检查 mdbook 版本,并运行您的预处理器。您需要实现的是 mdbook::preprocess::Preprocessor 特性。
此样板代码有几个重型依赖项(如 serde_json 和 mdbook)。如果您想创建一个小的可执行文件,您将不得不自己实现此功能。
示例
以下功能上与 mdbook 提供的 No-Op Preprocessor 示例 相同。
use mdbook::book::Book;
use mdbook::preprocess::{CmdPreprocessor, Preprocessor, PreprocessorContext};
use anyhow::{bail, Result};
fn main() {
mdbook_preprocessor_boilerplate::run(
NoOpPreprocessor,
"An mdbook preprocessor that does nothing" // CLI description
);
}
struct NoOpPreprocessor;
impl Preprocessor for NoOpPreprocessor {
fn name(&self) -> &str {
"nop-preprocessor"
}
fn run(&self, ctx: &PreprocessorContext, book: Book) -> Result<Book> {
// In testing we want to tell the preprocessor to blow up by setting a
// particular config value
if let Some(nop_cfg) = ctx.config.get_preprocessor(self.name()) {
if nop_cfg.contains_key("blow-up") {
anyhow::bail!("Boom!!1!");
}
}
// we *are* a no-op preprocessor after all
Ok(book)
}
fn supports_renderer(&self, renderer: &str) -> bool {
renderer != "not-supported"
}
}
许可证:GPL-3.0
依赖关系
~12–23MB
~324K SLoC