mdbook_langtabs/
lib.rs

1use mdbook_preprocessor::book::{Book, BookItem};
2use mdbook_preprocessor::errors::Error;
3use mdbook_preprocessor::{Preprocessor, PreprocessorContext};
4
5mod languages;
6mod preprocessor;
7
8pub struct LangTabsPreprocessor;
9
10impl Default for LangTabsPreprocessor {
11    fn default() -> Self {
12        Self::new()
13    }
14}
15
16impl LangTabsPreprocessor {
17    pub fn new() -> Self {
18        LangTabsPreprocessor
19    }
20}
21
22impl Preprocessor for LangTabsPreprocessor {
23    fn name(&self) -> &str {
24        "langtabs"
25    }
26
27    fn run(&self, _ctx: &PreprocessorContext, mut book: Book) -> Result<Book, Error> {
28        book.for_each_mut(|item| {
29            if let BookItem::Chapter(chapter) = item {
30                preprocessor::process_chapter(chapter);
31            }
32        });
33
34        Ok(book)
35    }
36
37    fn supports_renderer(
38        &self,
39        renderer: &str,
40    ) -> Result<bool, mdbook_preprocessor::errors::Error> {
41        Ok(renderer == "html")
42    }
43}