mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
Move doc alias discovery into the Attributes struct and some code improvements
This commit is contained in:
parent
f581cf7544
commit
883c177abb
@ -643,6 +643,15 @@ impl Attributes {
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub fn get_doc_aliases(&self) -> FxHashSet<String> {
|
||||
self.other_attrs
|
||||
.lists(sym::doc)
|
||||
.filter(|a| a.check_name(sym::alias))
|
||||
.filter_map(|a| a.value_str().map(|s| s.to_string().replace("\"", "")))
|
||||
.filter(|v| !v.is_empty())
|
||||
.collect::<FxHashSet<_>>()
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for Attributes {
|
||||
|
@ -278,7 +278,7 @@ pub struct RenderInfo {
|
||||
/// Struct representing one entry in the JS search index. These are all emitted
|
||||
/// by hand to a large JS file at the end of cache-creation.
|
||||
#[derive(Debug)]
|
||||
pub struct IndexItem {
|
||||
struct IndexItem {
|
||||
ty: ItemType,
|
||||
name: String,
|
||||
path: String,
|
||||
|
@ -328,15 +328,7 @@ impl DocFolder for Cache {
|
||||
search_type: get_index_search_type(&item),
|
||||
});
|
||||
|
||||
for alias in item
|
||||
.attrs
|
||||
.lists(sym::doc)
|
||||
.filter(|a| a.check_name(sym::alias))
|
||||
.filter_map(|a| a.value_str().map(|s| s.to_string().replace("\"", "")))
|
||||
.filter(|v| !v.is_empty())
|
||||
.collect::<FxHashSet<_>>()
|
||||
.into_iter()
|
||||
{
|
||||
for alias in item.attrs.get_doc_aliases() {
|
||||
self.aliases
|
||||
.entry(alias.to_lowercase())
|
||||
.or_insert(Vec::with_capacity(1))
|
||||
@ -378,9 +370,6 @@ impl DocFolder for Cache {
|
||||
| clean::MacroItem(..)
|
||||
| clean::ProcMacroItem(..)
|
||||
| clean::VariantItem(..)
|
||||
| clean::StructFieldItem(..)
|
||||
| clean::TyMethodItem(..)
|
||||
| clean::MethodItem(..)
|
||||
if !self.stripped_mod =>
|
||||
{
|
||||
// Re-exported items mean that the same id can show up twice
|
||||
@ -564,15 +553,7 @@ fn build_index(krate: &clean::Crate, cache: &mut Cache) -> String {
|
||||
parent_idx: None,
|
||||
search_type: get_index_search_type(&item),
|
||||
});
|
||||
for alias in item
|
||||
.attrs
|
||||
.lists(sym::doc)
|
||||
.filter(|a| a.check_name(sym::alias))
|
||||
.filter_map(|a| a.value_str().map(|s| s.to_string().replace("\"", "")))
|
||||
.filter(|v| !v.is_empty())
|
||||
.collect::<FxHashSet<_>>()
|
||||
.into_iter()
|
||||
{
|
||||
for alias in item.attrs.get_doc_aliases().into_iter() {
|
||||
aliases
|
||||
.entry(alias.to_lowercase())
|
||||
.or_insert(Vec::with_capacity(1))
|
||||
@ -619,22 +600,8 @@ fn build_index(krate: &clean::Crate, cache: &mut Cache) -> String {
|
||||
.map(|module| shorten(plain_summary_line(module.doc_value())))
|
||||
.unwrap_or(String::new());
|
||||
|
||||
let crate_aliases = aliases
|
||||
.iter()
|
||||
.map(|(k, values)| {
|
||||
(
|
||||
k.clone(),
|
||||
values
|
||||
.iter()
|
||||
.filter_map(|v| {
|
||||
let x = &crate_items[*v];
|
||||
if x.parent_idx.is_some() == x.parent.is_some() { Some(*v) } else { None }
|
||||
})
|
||||
.collect::<Vec<_>>(),
|
||||
)
|
||||
})
|
||||
.filter(|(_, values)| !values.is_empty())
|
||||
.collect::<Vec<_>>();
|
||||
let crate_aliases =
|
||||
aliases.iter().map(|(k, values)| (k.clone(), values.clone())).collect::<Vec<_>>();
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct CrateData<'a> {
|
||||
|
@ -972,7 +972,7 @@ function getSearchElement() {
|
||||
desc: item.desc,
|
||||
ty: item.ty,
|
||||
parent: item.parent,
|
||||
type: item.parent,
|
||||
type: item.type,
|
||||
is_alias: true,
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user