Skip to content

Commit

Permalink
Sort fields, variants and other unsorted elements in the sidebar
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeGomez committed May 27, 2020
1 parent 9eedd13 commit 5ba5b65
Showing 1 changed file with 31 additions and 32 deletions.
63 changes: 31 additions & 32 deletions src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4064,9 +4064,9 @@ fn sidebar_assoc_items(it: &clean::Item) -> String {
.filter(|i| i.inner_impl().trait_.is_none())
.flat_map(move |i| get_methods(i.inner_impl(), false, used_links_bor, false))
.collect::<Vec<_>>();
// We want links' order to be reproducible so we don't use unstable sort.
ret.sort();
if !ret.is_empty() {
// We want links' order to be reproducible so we don't use unstable sort.
ret.sort();
out.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#implementations\">Methods</a>\
<div class=\"sidebar-links\">{}</div>",
Expand Down Expand Up @@ -4237,7 +4237,7 @@ fn is_negative_impl(i: &clean::Impl) -> bool {
fn sidebar_trait(buf: &mut Buffer, it: &clean::Item, t: &clean::Trait) {
let mut sidebar = String::new();

let types = t
let mut types = t
.items
.iter()
.filter_map(|m| match m.name {
Expand All @@ -4246,8 +4246,8 @@ fn sidebar_trait(buf: &mut Buffer, it: &clean::Item, t: &clean::Trait) {
}
_ => None,
})
.collect::<String>();
let consts = t
.collect::<Vec<_>>();
let mut consts = t
.items
.iter()
.filter_map(|m| match m.name {
Expand All @@ -4256,7 +4256,7 @@ fn sidebar_trait(buf: &mut Buffer, it: &clean::Item, t: &clean::Trait) {
}
_ => None,
})
.collect::<String>();
.collect::<Vec<_>>();
let mut required = t
.items
.iter()
Expand All @@ -4279,32 +4279,34 @@ fn sidebar_trait(buf: &mut Buffer, it: &clean::Item, t: &clean::Trait) {
.collect::<Vec<String>>();

if !types.is_empty() {
types.sort();
sidebar.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#associated-types\">\
Associated Types</a><div class=\"sidebar-links\">{}</div>",
types
Associated Types</a><div class=\"sidebar-links\">{}</div>",
types.join("")
));
}
if !consts.is_empty() {
consts.sort();
sidebar.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#associated-const\">\
Associated Constants</a><div class=\"sidebar-links\">{}</div>",
consts
Associated Constants</a><div class=\"sidebar-links\">{}</div>",
consts.join("")
));
}
if !required.is_empty() {
required.sort();
sidebar.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#required-methods\">\
Required Methods</a><div class=\"sidebar-links\">{}</div>",
Required Methods</a><div class=\"sidebar-links\">{}</div>",
required.join("")
));
}
if !provided.is_empty() {
provided.sort();
sidebar.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#provided-methods\">\
Provided Methods</a><div class=\"sidebar-links\">{}</div>",
Provided Methods</a><div class=\"sidebar-links\">{}</div>",
provided.join("")
));
}
Expand All @@ -4322,8 +4324,8 @@ fn sidebar_trait(buf: &mut Buffer, it: &clean::Item, t: &clean::Trait) {
res.sort();
sidebar.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#foreign-impls\">\
Implementations on Foreign Types</a><div \
class=\"sidebar-links\">{}</div>",
Implementations on Foreign Types</a><div \
class=\"sidebar-links\">{}</div>",
res.into_iter()
.map(|(name, id)| format!("<a href=\"#{}\">{}</a>", id, Escape(&name)))
.collect::<Vec<_>>()
Expand All @@ -4336,7 +4338,7 @@ fn sidebar_trait(buf: &mut Buffer, it: &clean::Item, t: &clean::Trait) {
if t.auto {
sidebar.push_str(
"<a class=\"sidebar-title\" \
href=\"#synthetic-implementors\">Auto Implementors</a>",
href=\"#synthetic-implementors\">Auto Implementors</a>",
);
}

Expand All @@ -4362,18 +4364,18 @@ fn sidebar_typedef(buf: &mut Buffer, it: &clean::Item) {
}

fn get_struct_fields_name(fields: &[clean::Item]) -> String {
fields
let mut fields = fields
.iter()
.filter(|f| if let clean::StructFieldItem(..) = f.inner { true } else { false })
.filter_map(|f| match f.name {
Some(ref name) => Some(format!(
"<a href=\"#structfield.{name}\">\
{name}</a>",
name = name
)),
Some(ref name) => {
Some(format!("<a href=\"#structfield.{name}\">{name}</a>", name = name))
}
_ => None,
})
.collect()
.collect::<Vec<_>>();
fields.sort();
fields.join("")
}

fn sidebar_union(buf: &mut Buffer, it: &clean::Item, u: &clean::Union) {
Expand All @@ -4383,7 +4385,7 @@ fn sidebar_union(buf: &mut Buffer, it: &clean::Item, u: &clean::Union) {
if !fields.is_empty() {
sidebar.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#fields\">Fields</a>\
<div class=\"sidebar-links\">{}</div>",
<div class=\"sidebar-links\">{}</div>",
fields
));
}
Expand All @@ -4398,23 +4400,20 @@ fn sidebar_union(buf: &mut Buffer, it: &clean::Item, u: &clean::Union) {
fn sidebar_enum(buf: &mut Buffer, it: &clean::Item, e: &clean::Enum) {
let mut sidebar = String::new();

let variants = e
let mut variants = e
.variants
.iter()
.filter_map(|v| match v.name {
Some(ref name) => Some(format!(
"<a href=\"#variant.{name}\">{name}\
</a>",
name = name
)),
Some(ref name) => Some(format!("<a href=\"#variant.{name}\">{name}</a>", name = name)),
_ => None,
})
.collect::<String>();
.collect::<Vec<_>>();
if !variants.is_empty() {
variants.sort_unstable();
sidebar.push_str(&format!(
"<a class=\"sidebar-title\" href=\"#variants\">Variants</a>\
<div class=\"sidebar-links\">{}</div>",
variants
<div class=\"sidebar-links\">{}</div>",
variants.join(""),
));
}

Expand Down

0 comments on commit 5ba5b65

Please sign in to comment.