rustdoc-search: use ES6 Map
for aliases instead of Object
This commit is contained in:
parent
a41fc00eaf
commit
2179d9157e
@ -191,7 +191,7 @@ function initSearch(rawSearchIndex) {
|
|||||||
*/
|
*/
|
||||||
let searchIndex;
|
let searchIndex;
|
||||||
let currentResults;
|
let currentResults;
|
||||||
const ALIASES = Object.create(null);
|
const ALIASES = new Map();
|
||||||
|
|
||||||
function isWhitespace(c) {
|
function isWhitespace(c) {
|
||||||
return " \t\n\r".indexOf(c) !== -1;
|
return " \t\n\r".indexOf(c) !== -1;
|
||||||
@ -1424,22 +1424,22 @@ function initSearch(rawSearchIndex) {
|
|||||||
const aliases = [];
|
const aliases = [];
|
||||||
const crateAliases = [];
|
const crateAliases = [];
|
||||||
if (filterCrates !== null) {
|
if (filterCrates !== null) {
|
||||||
if (ALIASES[filterCrates] && ALIASES[filterCrates][lowerQuery]) {
|
if (ALIASES.has(filterCrates) && ALIASES.get(filterCrates).has(lowerQuery)) {
|
||||||
const query_aliases = ALIASES[filterCrates][lowerQuery];
|
const query_aliases = ALIASES.get(filterCrates).get(lowerQuery);
|
||||||
for (const alias of query_aliases) {
|
for (const alias of query_aliases) {
|
||||||
aliases.push(createAliasFromItem(searchIndex[alias]));
|
aliases.push(createAliasFromItem(searchIndex[alias]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Object.keys(ALIASES).forEach(crate => {
|
for (const [crate, crateAliasesIndex] of ALIASES) {
|
||||||
if (ALIASES[crate][lowerQuery]) {
|
if (crateAliasesIndex.has(lowerQuery)) {
|
||||||
const pushTo = crate === currentCrate ? crateAliases : aliases;
|
const pushTo = crate === currentCrate ? crateAliases : aliases;
|
||||||
const query_aliases = ALIASES[crate][lowerQuery];
|
const query_aliases = crateAliasesIndex.get(lowerQuery);
|
||||||
for (const alias of query_aliases) {
|
for (const alias of query_aliases) {
|
||||||
pushTo.push(createAliasFromItem(searchIndex[alias]));
|
pushTo.push(createAliasFromItem(searchIndex[alias]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const sortFunc = (aaa, bbb) => {
|
const sortFunc = (aaa, bbb) => {
|
||||||
@ -2345,17 +2345,22 @@ function initSearch(rawSearchIndex) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (aliases) {
|
if (aliases) {
|
||||||
ALIASES[crate] = Object.create(null);
|
const currentCrateAliases = new Map();
|
||||||
|
ALIASES.set(crate, currentCrateAliases);
|
||||||
for (const alias_name in aliases) {
|
for (const alias_name in aliases) {
|
||||||
if (!hasOwnPropertyRustdoc(aliases, alias_name)) {
|
if (!hasOwnPropertyRustdoc(aliases, alias_name)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasOwnPropertyRustdoc(ALIASES[crate], alias_name)) {
|
let currentNameAliases;
|
||||||
ALIASES[crate][alias_name] = [];
|
if (currentCrateAliases.has(alias_name)) {
|
||||||
|
currentNameAliases = currentCrateAliases.get(alias_name);
|
||||||
|
} else {
|
||||||
|
currentNameAliases = [];
|
||||||
|
currentCrateAliases.set(alias_name, currentNameAliases);
|
||||||
}
|
}
|
||||||
for (const local_alias of aliases[alias_name]) {
|
for (const local_alias of aliases[alias_name]) {
|
||||||
ALIASES[crate][alias_name].push(local_alias + currentIndex);
|
currentNameAliases.push(local_alias + currentIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user