Render doc sidebar using Askama · rust-lang/rust@2f166d1 (original) (raw)

`@@ -17,10 +17,11 @@ use super::print_item::{full_path, item_path, print_item};

`

17

17

`use super::search_index::build_index;

`

18

18

`use super::write_shared::write_shared;

`

19

19

`use super::{

`

20

``

`-

collect_spans_and_sources, print_sidebar, scrape_examples_help, sidebar_module_like, AllTypes,

`

21

``

`-

LinkFromSrc, StylePath,

`

``

20

`+

collect_spans_and_sources, scrape_examples_help,

`

``

21

`+

sidebar::print_sidebar,

`

``

22

`+

sidebar::{sidebar_module_like, Sidebar},

`

``

23

`+

AllTypes, LinkFromSrc, StylePath,

`

22

24

`};

`

23

``

-

24

25

`use crate::clean::{self, types::ExternalLocation, ExternalCrate};

`

25

26

`use crate::config::{ModuleSorting, RenderOptions};

`

26

27

`use crate::docfs::{DocFS, PathError};

`

`@@ -35,6 +36,7 @@ use crate::html::url_parts_builder::UrlPartsBuilder;

`

35

36

`use crate::html::{layout, sources, static_files};

`

36

37

`use crate::scrape_examples::AllCallLocations;

`

37

38

`use crate::try_err;

`

``

39

`+

use askama::Template;

`

38

40

``

39

41

`/// Major driving force in all rustdoc rendering. This contains information

`

40

42

`/// about where in the tree-like hierarchy rendering is occurring and controls

`

`@@ -600,15 +602,18 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {

`

600

602

`};

`

601

603

`let all = shared.all.replace(AllTypes::new());

`

602

604

`let mut sidebar = Buffer::html();

`

603

``

`-

write!(sidebar, "<h2 class="location"><a href="#">Crate {}", crate_name);

`

604

``

-

605

``

`-

let mut items = Buffer::html();

`

606

``

`-

sidebar_module_like(&mut items, all.item_sections());

`

607

``

`-

if !items.is_empty() {

`

608

``

`-

sidebar.push_str("<div class="sidebar-elems">");

`

609

``

`-

sidebar.push_buffer(items);

`

610

``

`-

sidebar.push_str("");

`

611

``

`-

}

`

``

605

+

``

606

`+

let blocks = sidebar_module_like(all.item_sections());

`

``

607

`+

let bar = Sidebar {

`

``

608

`+

title_prefix: "Crate ",

`

``

609

`+

title: crate_name.as_str(),

`

``

610

`+

is_crate: false,

`

``

611

`+

version: "",

`

``

612

`+

blocks: vec![blocks],

`

``

613

`+

path: String::new(),

`

``

614

`+

};

`

``

615

+

``

616

`+

bar.render_into(&mut sidebar).unwrap();

`

612

617

``

613

618

`let v = layout::render(

`

614

619

`&shared.layout,

`