Deduplicate item sections
This commit is contained in:
parent
fa400ace11
commit
1115f69bf4
2 changed files with 13 additions and 22 deletions
|
@ -2534,19 +2534,11 @@ fn item_ty_to_section(ty: ItemType) -> ItemSection {
|
||||||
fn sidebar_module(buf: &mut Buffer, items: &[clean::Item]) {
|
fn sidebar_module(buf: &mut Buffer, items: &[clean::Item]) {
|
||||||
let mut sidebar = String::new();
|
let mut sidebar = String::new();
|
||||||
|
|
||||||
// Re-exports are handled a bit differently because they can be extern crates or imports.
|
let mut already_emitted_sections = FxHashSet::default();
|
||||||
if items.iter().any(|it| {
|
|
||||||
it.name.is_some()
|
|
||||||
&& (it.type_() == ItemType::ExternCrate
|
|
||||||
|| (it.type_() == ItemType::Import && !it.is_stripped()))
|
|
||||||
}) {
|
|
||||||
let sec = item_ty_to_section(ItemType::Import);
|
|
||||||
sidebar.push_str(&format!("<li><a href=\"#{}\">{}</a></li>", sec.id(), sec.name()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ordering taken from item_module, reorder, where it prioritized elements in a certain order
|
// ordering taken from item_module, reorder, where it prioritized elements in a certain order
|
||||||
// to print its headings
|
// to print its headings
|
||||||
for &myty in &[
|
for &myty in &[
|
||||||
|
ItemType::Import,
|
||||||
ItemType::Primitive,
|
ItemType::Primitive,
|
||||||
ItemType::Module,
|
ItemType::Module,
|
||||||
ItemType::Macro,
|
ItemType::Macro,
|
||||||
|
@ -2570,6 +2562,9 @@ fn sidebar_module(buf: &mut Buffer, items: &[clean::Item]) {
|
||||||
] {
|
] {
|
||||||
if items.iter().any(|it| !it.is_stripped() && it.type_() == myty && it.name.is_some()) {
|
if items.iter().any(|it| !it.is_stripped() && it.type_() == myty && it.name.is_some()) {
|
||||||
let sec = item_ty_to_section(myty);
|
let sec = item_ty_to_section(myty);
|
||||||
|
if !already_emitted_sections.insert(sec) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
sidebar.push_str(&format!("<li><a href=\"#{}\">{}</a></li>", sec.id(), sec.name()));
|
sidebar.push_str(&format!("<li><a href=\"#{}\">{}</a></li>", sec.id(), sec.name()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -271,7 +271,7 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl
|
||||||
});
|
});
|
||||||
|
|
||||||
debug!("{:?}", indices);
|
debug!("{:?}", indices);
|
||||||
let mut curty = None;
|
let mut last_section = None;
|
||||||
|
|
||||||
for &idx in &indices {
|
for &idx in &indices {
|
||||||
let myitem = &items[idx];
|
let myitem = &items[idx];
|
||||||
|
@ -279,24 +279,20 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
let myty = Some(myitem.type_());
|
let my_section = item_ty_to_section(myitem.type_());
|
||||||
if curty == Some(ItemType::ExternCrate) && myty == Some(ItemType::Import) {
|
if Some(my_section) != last_section {
|
||||||
// Put `extern crate` and `use` re-exports in the same section.
|
if last_section.is_some() {
|
||||||
curty = myty;
|
|
||||||
} else if myty != curty {
|
|
||||||
if curty.is_some() {
|
|
||||||
w.write_str(ITEM_TABLE_CLOSE);
|
w.write_str(ITEM_TABLE_CLOSE);
|
||||||
}
|
}
|
||||||
curty = myty;
|
last_section = Some(my_section);
|
||||||
let sec = item_ty_to_section(myty.unwrap());
|
|
||||||
write!(
|
write!(
|
||||||
w,
|
w,
|
||||||
"<h2 id=\"{id}\" class=\"small-section-header\">\
|
"<h2 id=\"{id}\" class=\"small-section-header\">\
|
||||||
<a href=\"#{id}\">{name}</a>\
|
<a href=\"#{id}\">{name}</a>\
|
||||||
</h2>\n{}",
|
</h2>\n{}",
|
||||||
ITEM_TABLE_OPEN,
|
ITEM_TABLE_OPEN,
|
||||||
id = cx.derive_id(sec.id().to_owned()),
|
id = cx.derive_id(my_section.id().to_owned()),
|
||||||
name = sec.name(),
|
name = my_section.name(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,7 +404,7 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if curty.is_some() {
|
if last_section.is_some() {
|
||||||
w.write_str(ITEM_TABLE_CLOSE);
|
w.write_str(ITEM_TABLE_CLOSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue