mdbook-preprocessor-boilerplate
Boilerplate code for mdbook preprocessors.
Handles the CLI, checks whether the renderer is supported, checks the mdbook version, and runs
your preprocessor. All you need to do is implement the [mdbook_preprocessor::Preprocessor] trait.
Example
The following is functionally identical to the No-Op Preprocessor Example
given by mdbook.
use mdbook_preprocessor::{book::Book, Preprocessor, PreprocessorContext};
use anyhow::{bail, Result};
fn main() -> Result<()> {
mdbook_preprocessor_boilerplate::run(
NoOpPreprocessor,
"An mdbook preprocessor that does nothing" )
}
struct NoOpPreprocessor;
impl Preprocessor for NoOpPreprocessor {
fn name(&self) -> &str {
"nop-preprocessor"
}
fn run(&self, ctx: &PreprocessorContext, book: Book) -> Result<Book> {
if let Ok(Some(true)) = ctx.config.get(&format!("{}.blow-up", self.name())) {
anyhow::bail!("Boom!!1!");
}
Ok(book)
}
fn supports_renderer(&self, renderer: &str) -> Result<bool> {
Ok(renderer != "not-supported")
}
}
License: GPL-3.0