mirror of
https://github.com/RGBCube/GitHubWrapper
synced 2025-07-25 15:37:45 +00:00
Docs base plate?
This commit is contained in:
parent
359c483c66
commit
187f15f8bc
29 changed files with 3493 additions and 52 deletions
83
docs/_static/scorer.js
vendored
Normal file
83
docs/_static/scorer.js
vendored
Normal file
|
@ -0,0 +1,83 @@
|
|||
'use-strict';
|
||||
|
||||
let queryBeingDone = null;
|
||||
let pattern = null;
|
||||
|
||||
const escapedRegex = /[-\/\\^$*+?.()|[\]{}]/g;
|
||||
function escapeRegex(e) {
|
||||
return e.replace(escapedRegex, '\\$&');
|
||||
}
|
||||
|
||||
// for some reason Sphinx shows some entries twice
|
||||
// if something has been scored already I'd rather sort it to the bottom
|
||||
const beenScored = new Set();
|
||||
|
||||
function __score(haystack, regex) {
|
||||
let match = regex.exec(haystack);
|
||||
if (match == null) {
|
||||
return Number.MAX_VALUE;
|
||||
}
|
||||
let subLength = match[0].length;
|
||||
let start = match.index;
|
||||
return (subLength * 1000 + start) / 1000.0;
|
||||
}
|
||||
|
||||
// unused for now
|
||||
function __cleanNamespaces(query) {
|
||||
return query.replace(/(discord\.(ext\.)?)?(.+)/, '$3');
|
||||
}
|
||||
|
||||
Scorer = {
|
||||
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [filename, title, anchor, descr, score]
|
||||
// and returns the new score.
|
||||
score: (result) => {
|
||||
// only inflate the score of things that are actual API reference things
|
||||
const [, title, , , score] = result;
|
||||
|
||||
if (pattern !== null && title.startsWith('discord.')) {
|
||||
let _score = __score(title, pattern);
|
||||
if (_score === Number.MAX_VALUE) {
|
||||
return score;
|
||||
}
|
||||
if (beenScored.has(title)) {
|
||||
return 0;
|
||||
}
|
||||
beenScored.add(title);
|
||||
let newScore = 100 + queryBeingDone.length - _score;
|
||||
// console.log(`${title}: ${score} -> ${newScore} (${_score})`);
|
||||
return newScore;
|
||||
}
|
||||
return score;
|
||||
},
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 15,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 11,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {
|
||||
0: 15, // used to be importantResults
|
||||
1: 7, // used to be objectResults
|
||||
2: -5 // used to be unimportantResults
|
||||
},
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
partialTitle: 7,
|
||||
// query found in terms
|
||||
term: 5,
|
||||
partialTerm: 2
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
queryBeingDone = params.get('q');
|
||||
if (queryBeingDone) {
|
||||
let pattern = Array.from(queryBeingDone).map(escapeRegex).join('.*?');
|
||||
pattern = new RegExp(pattern, 'i');
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue