@startuml namespace book { class MDBook { project_root: PathBuf, template_dir: PathBuf, dest_base: PathBuf, render_intent: RenderIntent, translations: HashMap, indent_spaces: i32, livereload: bool, new(project_root) } class book::Book { config: BookConfig, toc: Vec, new(project_root) } class book::Chapter { title: String, path: PathBuf, dest_path: Option, authors: Option>, translators: Option>, description: Option, css_class: Option, new(title, path) } } namespace book::bookconfig { class BookConfig { dest: PathBuf, src: PathBuf, title: String, subtitle: Option, description: Option, language: Language, authors: Vec, translators: Option>, publisher: Option, number_format: NumberFormat, section_names: Vec, is_main_book: bool, is_multilang: bool, new(project_root) } class Author { name: String, file_as: String, email: Option, new(name) } class Language { name: String, code: String, new(name, code) } class Publisher { name: String, url: Option, logo_src: Option, new(name) } enum NumberFormat { Arabic Roman Word } } namespace book::toc { class TocContent { chapter: Chapter, sub_items: Option>, section: Option>, } enum TocItem { Numbered "TocContent", Unnumbered "TocContent", Unlisted "TocContent", Spacer, } } class Renderer { build(&self, project_root: &PathBuf), render(&self, book_project: &MDBook), } @enduml