mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Pulled object search routine into separate routine.
This makes it easier to re-use, and helps reduce the length of the main query routine.
This commit is contained in:
parent
d3479801bc
commit
a4df2bd182
@ -159,9 +159,7 @@ var Search = {
|
|||||||
var filenames = this._index.filenames;
|
var filenames = this._index.filenames;
|
||||||
var titles = this._index.titles;
|
var titles = this._index.titles;
|
||||||
var terms = this._index.terms;
|
var terms = this._index.terms;
|
||||||
var objects = this._index.objects;
|
|
||||||
var objtypes = this._index.objtypes;
|
var objtypes = this._index.objtypes;
|
||||||
var objnames = this._index.objnames;
|
|
||||||
var fileMap = {};
|
var fileMap = {};
|
||||||
var files = null;
|
var files = null;
|
||||||
// different result priorities
|
// different result priorities
|
||||||
@ -173,38 +171,11 @@ var Search = {
|
|||||||
|
|
||||||
// lookup as object
|
// lookup as object
|
||||||
if (object != null) {
|
if (object != null) {
|
||||||
for (var prefix in objects) {
|
var results = this.performObjectSearch(object);
|
||||||
for (var name in objects[prefix]) {
|
objectResults = results[0];
|
||||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
importantResults = results[1];
|
||||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
unimportantResults = results[2];
|
||||||
match = objects[prefix][name];
|
|
||||||
descr = objnames[match[1]] + _(', in ') + titles[match[0]];
|
|
||||||
// XXX the generated anchors are not generally correct
|
|
||||||
// XXX there may be custom prefixes
|
|
||||||
result = [filenames[match[0]], fullname, '#'+fullname, descr];
|
|
||||||
switch (match[2]) {
|
|
||||||
case 1: objectResults.push(result); break;
|
|
||||||
case 0: importantResults.push(result); break;
|
|
||||||
case 2: unimportantResults.push(result); break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// sort results descending
|
|
||||||
objectResults.sort(function(a, b) {
|
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
importantResults.sort(function(a, b) {
|
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
unimportantResults.sort(function(a, b) {
|
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// perform the search on the required terms
|
// perform the search on the required terms
|
||||||
for (var i = 0; i < searchterms.length; i++) {
|
for (var i = 0; i < searchterms.length; i++) {
|
||||||
@ -325,6 +296,50 @@ var Search = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
displayNextItem();
|
displayNextItem();
|
||||||
|
},
|
||||||
|
|
||||||
|
performObjectSearch : function(object) {
|
||||||
|
var filenames = this._index.filenames;
|
||||||
|
var objects = this._index.objects;
|
||||||
|
var objnames = this._index.objnames;
|
||||||
|
var titles = this._index.titles;
|
||||||
|
|
||||||
|
var importantResults = [];
|
||||||
|
var objectResults = [];
|
||||||
|
var unimportantResults = [];
|
||||||
|
|
||||||
|
for (var prefix in objects) {
|
||||||
|
for (var name in objects[prefix]) {
|
||||||
|
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||||
|
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||||
|
match = objects[prefix][name];
|
||||||
|
descr = objnames[match[1]] + _(', in ') + titles[match[0]];
|
||||||
|
// XXX the generated anchors are not generally correct
|
||||||
|
// XXX there may be custom prefixes
|
||||||
|
result = [filenames[match[0]], fullname, '#'+fullname, descr];
|
||||||
|
switch (match[2]) {
|
||||||
|
case 1: objectResults.push(result); break;
|
||||||
|
case 0: importantResults.push(result); break;
|
||||||
|
case 2: unimportantResults.push(result); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// sort results descending
|
||||||
|
objectResults.sort(function(a, b) {
|
||||||
|
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
importantResults.sort(function(a, b) {
|
||||||
|
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
unimportantResults.sort(function(a, b) {
|
||||||
|
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
return [importantResults, objectResults, unimportantResults]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user