X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustdoc%2Fhtml%2Frender%2Fcontext.rs;h=2085739fc46ec68e4ef80ea13878a399f59828d2;hb=a81f55fb161a22e287220281d33542406a3a57f8;hp=1898f5feed2cd13dc55ce3b4e16bf810c337cb0e;hpb=03b845a41f1666654ecffcbaa6a582170ec0ed8d;p=rust.git diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs index 1898f5feed2..2085739fc46 100644 --- a/src/librustdoc/html/render/context.rs +++ b/src/librustdoc/html/render/context.rs @@ -1,5 +1,6 @@ use std::cell::RefCell; use std::collections::BTreeMap; +use std::error::Error as StdError; use std::io; use std::path::{Path, PathBuf}; use std::rc::Rc; @@ -29,6 +30,7 @@ use crate::html::escape::Escape; use crate::html::format::Buffer; use crate::html::markdown::{self, plain_text_summary, ErrorCodes, IdMap}; +use crate::html::static_files::PAGE; use crate::html::{layout, sources}; /// Major driving force in all rustdoc rendering. This contains information @@ -121,6 +123,8 @@ /// to `Some(...)`, it'll store redirections and then generate a JSON file at the top level of /// the crate. redirections: Option>>, + + pub(crate) templates: tera::Tera, } impl SharedContext<'_> { @@ -218,6 +222,7 @@ fn render_item(&self, it: &clean::Item, is_module: bool) -> String { if !self.render_redirect_pages { layout::render( + &self.shared.templates, &self.shared.layout, &page, |buf: &mut _| print_sidebar(self, it, buf), @@ -408,6 +413,12 @@ fn init( let mut issue_tracker_base_url = None; let mut include_sources = true; + let mut templates = tera::Tera::default(); + templates.add_raw_template("page.html", PAGE).map_err(|e| Error { + file: "page.html".into(), + error: format!("{}: {}", e, e.source().map(|e| e.to_string()).unwrap_or_default()), + })?; + // Crawl the crate attributes looking for attributes which control how we're // going to emit HTML for attr in krate.module.attrs.lists(sym::doc) { @@ -454,6 +465,7 @@ fn init( errors: receiver, redirections: if generate_redirect_map { Some(Default::default()) } else { None }, show_type_layout, + templates, }; // Add the default themes to the `Vec` of stylepaths @@ -540,6 +552,7 @@ fn after_krate(&mut self) -> Result<(), Error> { }; let all = self.shared.all.replace(AllTypes::new()); let v = layout::render( + &self.shared.templates, &self.shared.layout, &page, sidebar, @@ -557,6 +570,7 @@ fn after_krate(&mut self) -> Result<(), Error> { let sidebar = "

Settings

"; style_files.push(StylePath { path: PathBuf::from("settings.css"), disabled: false }); let v = layout::render( + &self.shared.templates, &self.shared.layout, &page, sidebar,