authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-07 20:48:53-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-08 00:15:14-04:00
log2e26aaa70c2fd0fd9fdb036c71ab058e794f1f87
treecdffff79506269de03c5fa18a63bb2b755b6832f
parent7688100b1770a7d688348b8f31282c3a6a69e9f9
signaturelock-open Commit is signed but in an unrecognized format.

generated docs: prioritized sort ranking


1 files changed, 34 insertions(+), 14 deletions(-)

lib/std/special/docs/main.js+34-14
......@@ -280,10 +280,10 @@
280280 }
281281 }
282282 typesList.sort(function(a, b) {
283 return operatorCompare(a.name.toLowerCase(), b.name.toLowerCase());
283 return operatorCompare(a.name, b.name);
284284 });
285285 fnsList.sort(function(a, b) {
286 return operatorCompare(a.name.toLowerCase(), b.name.toLowerCase());
286 return operatorCompare(a.name, b.name);
287287 });
288288
289289 if (typesList.length !== 0) {
......@@ -488,11 +488,9 @@
488488 function onSearchKeyDown(ev) {
489489 switch (ev.which) {
490490 case 13:
491 var liDom = null;
492 if (domListSearchResults.children.length === 1) {
491 var liDom = domListSearchResults.children[curSearchIndex];
492 if (liDom == null && domListSearchResults.children.length !== 0) {
493493 liDom = domListSearchResults.children[0];
494 } else {
495 liDom = domListSearchResults.children[curSearchIndex];
496494 }
497495 if (liDom != null) {
498496 var aDom = liDom.children[0];
......@@ -604,29 +602,49 @@
604602
605603 var decl = zigAnalysis.decls[declIndex];
606604 var lastPkgName = canonPath.pkgNames[canonPath.pkgNames.length - 1];
607 var searchText = lastPkgName + "." + canonPath.declNames.join('.');
605 var fullPathSearchText = lastPkgName + "." + canonPath.declNames.join('.');
608606 var astNode = zigAnalysis.astNodes[decl.src];
607 var fileAndDocs = zigAnalysis.files[astNode.file];
609608 if (astNode.docs != null) {
610 searchText += "\n" + astNode.docs;
609 fileAndDocs += "\n" + astNode.docs;
611610 }
612 var file = zigAnalysis.files[astNode.file];
613 searchText += "\n" + file;
611 var fullPathSearchTextLower = fullPathSearchText;
614612 if (ignoreCase) {
615 searchText = searchText.toLowerCase();
613 fullPathSearchTextLower = fullPathSearchTextLower.toLowerCase();
614 fileAndDocs = fileAndDocs.toLowerCase();
616615 }
617616
617 var points = 0;
618618 for (var termIndex = 0; termIndex < terms.length; termIndex += 1) {
619619 var term = terms[termIndex];
620 if (searchText.indexOf(term) >= 0) {
620
621 // exact, case sensitive match of full decl path
622 if (fullPathSearchText === term) {
623 points += 4;
624 continue;
625 }
626 // exact, case sensitive match of just decl name
627 if (decl.name == term) {
628 points += 3;
629 continue;
630 }
631 // substring, case insensitive match of full decl path
632 if (fullPathSearchTextLower.indexOf(term) >= 0) {
633 points += 2;
621634 continue;
622 } else {
623 continue decl_loop;
624635 }
636 if (fileAndDocs.indexOf(term) >= 0) {
637 points += 1;
638 continue;
639 }
640
641 continue decl_loop;
625642 }
626643
627644 matchedItems.push({
628645 decl: decl,
629646 path: canonPath,
647 points: points,
630648 });
631649 }
632650
......@@ -634,6 +652,8 @@
634652 resizeDomList(domListSearchResults, matchedItems.length, '<li><a href="#"></a></li>');
635653
636654 matchedItems.sort(function(a, b) {
655 var cmp = operatorCompare(b.points, a.points);
656 if (cmp != 0) return cmp;
637657 return operatorCompare(a.decl.name, b.decl.name);
638658 });
639659