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}