in lib/resources/script.js [99:153]
function findMatches(index, query) {
if (query === '') {
return [];
}
const allMatches = [];
index.forEach(element => {
function score(value) {
value -= element.overriddenDepth * 10;
const weightFactor = weights[element.type] || 4;
allMatches.push({element: element, score: (value / weightFactor) >> 0});
}
const name = element.name;
const qualifiedName = element.qualifiedName;
const lowerName = name.toLowerCase();
const lowerQualifiedName = qualifiedName.toLowerCase();
const lowerQuery = query.toLowerCase();
if (name === query || qualifiedName === query || name === `dart:${query}`) {
score(2000);
} else if (lowerName === `dart:${lowerQuery}`) {
score(1800);
} else if (lowerName === lowerQuery || lowerQualifiedName === lowerQuery) {
score(1700);
} else if (query.length > 1) {
if (name.startsWith(query) || qualifiedName.startsWith(query)) {
score(750);
} else if (lowerName.startsWith(lowerQuery) || lowerQualifiedName.startsWith(lowerQuery)) {
score(650);
} else if (name.includes(query) || qualifiedName.includes(query)) {
score(500);
} else if (lowerName.includes(lowerQuery) || lowerQualifiedName.includes(query)) {
score(400);
}
}
});
allMatches.sort((a, b) => {
const x = b.score - a.score;
if (x === 0) {
return a.element.name.length - b.element.name.length;
}
return x;
});
const justElements = [];
for (let i = 0; i < allMatches.length; i++) {
justElements.push(allMatches[i].element);
}
return justElements;
}