]> git.proxmox.com Git - rustc.git/blame - vendor/mdbook/src/renderer/markdown_renderer.rs
New upstream version 1.49.0+dfsg1
[rustc.git] / vendor / mdbook / src / renderer / markdown_renderer.rs
CommitLineData
e74abb32
XL
1use crate::book::BookItem;
2use crate::errors::*;
3use crate::renderer::{RenderContext, Renderer};
4use crate::utils;
5
6use std::fs;
7
8#[derive(Default)]
9/// A renderer to output the Markdown after the preprocessors have run. Mostly useful
10/// when debugging preprocessors.
11pub struct MarkdownRenderer;
12
13impl MarkdownRenderer {
14 /// Create a new `MarkdownRenderer` instance.
15 pub fn new() -> Self {
16 MarkdownRenderer
17 }
18}
19
20impl Renderer for MarkdownRenderer {
21 fn name(&self) -> &str {
22 "markdown"
23 }
24
25 fn render(&self, ctx: &RenderContext) -> Result<()> {
26 let destination = &ctx.destination;
27 let book = &ctx.book;
28
29 if destination.exists() {
30 utils::fs::remove_dir_content(destination)
72b1a166 31 .with_context(|| "Unable to remove stale Markdown output")?;
e74abb32
XL
32 }
33
34 trace!("markdown render");
35 for item in book.iter() {
36 if let BookItem::Chapter(ref ch) = *item {
72b1a166
FG
37 if !ch.is_draft_chapter() {
38 utils::fs::write_file(
39 &ctx.destination,
40 &ch.path.as_ref().expect("Checked path exists before"),
41 ch.content.as_bytes(),
42 )?;
43 }
e74abb32
XL
44 }
45 }
46
47 fs::create_dir_all(&destination)
72b1a166 48 .with_context(|| "Unexpected error when constructing destination path")?;
e74abb32
XL
49
50 Ok(())
51 }
52}