]> git.lizzy.rs Git - rust.git/commitdiff
rustdoc: Clean the `initSearch` routine up.
authorKang Seonghoon <public+git@mearie.org>
Tue, 8 Apr 2014 17:47:52 +0000 (02:47 +0900)
committerAlex Crichton <alex@alexcrichton.com>
Thu, 10 Apr 2014 22:21:59 +0000 (15:21 -0700)
src/librustdoc/html/static/main.js

index ffdf67e56cf7fd67a84db1442c922ed5f745355a..1904ab27d17d94f4927281c3bd899e098f5aa4cf 100644 (file)
                 val = valLower,
                 typeFilter = query.type,
                 results = [],
-                aa = 0,
-                bb = 0,
                 split = valLower.split("::");
 
             //remove empty keywords
             }
 
             // quoted values mean literal search
-            bb = searchWords.length;
+            var nSearchWords = searchWords.length;
             if ((val.charAt(0) === "\"" || val.charAt(0) === "'") &&
                 val.charAt(val.length - 1) === val.charAt(0))
             {
                 val = val.substr(1, val.length - 2);
-                for (aa = 0; aa < bb; aa += 1) {
-                    if (searchWords[aa] === val) {
+                for (var i = 0; i < nSearchWords; i += 1) {
+                    if (searchWords[i] === val) {
                         // filter type: ... queries
-                        if (!typeFilter || typeFilter === searchIndex[aa].ty) {
-                            results.push([aa, -1]);
+                        if (!typeFilter || typeFilter === searchIndex[i].ty) {
+                            results.push({id: i, index: -1});
                         }
                     }
                     if (results.length === max) {
                 // gather matching search results up to a certain maximum
                 val = val.replace(/\_/g, "");
                 for (var i = 0; i < split.length; i++) {
-                    for (aa = 0; aa < bb; aa += 1) {
-                        if (searchWords[aa].indexOf(split[i]) > -1 ||
-                            searchWords[aa].indexOf(val) > -1 ||
-                            searchWords[aa].replace(/_/g, "").indexOf(val) > -1)
+                    for (var j = 0; j < nSearchWords; j += 1) {
+                        if (searchWords[j].indexOf(split[i]) > -1 ||
+                            searchWords[j].indexOf(val) > -1 ||
+                            searchWords[j].replace(/_/g, "").indexOf(val) > -1)
                         {
                             // filter type: ... queries
-                            if (!typeFilter || typeFilter === searchIndex[aa].ty) {
-                                results.push([aa, searchWords[aa].replace(/_/g, "").indexOf(val)]);
+                            if (!typeFilter || typeFilter === searchIndex[j].ty) {
+                                results.push({id: j, index: searchWords[j].replace(/_/g, "").indexOf(val)});
                             }
                         }
                         if (results.length === max) {
                 }
             }
 
-            bb = results.length;
-            for (aa = 0; aa < bb; aa += 1) {
-                results[aa].push(searchIndex[results[aa][0]].ty);
-                results[aa].push(searchIndex[results[aa][0]].path);
-                results[aa].push(searchIndex[results[aa][0]].name);
-                results[aa].push(searchIndex[results[aa][0]].parent);
-                results[aa].push(searchIndex[results[aa][0]].crate);
+            var nresults = results.length;
+            for (var i = 0; i < nresults; i += 1) {
+                results[i].word = searchWords[results[i].id];
+                results[i].item = searchIndex[results[i].id] || {};
+                results[i].ty = results[i].item.ty;
+                results[i].path = results[i].item.path;
             }
             // if there are no results then return to default and fail
             if (results.length === 0) {
 
             // sort by exact match
             results.sort(function search_complete_sort0(aaa, bbb) {
-                if (searchWords[aaa[0]] === valLower &&
-                    searchWords[bbb[0]] !== valLower) {
+                if (aaa.word === valLower &&
+                    bbb.word !== valLower) {
                     return 1;
                 }
             });
             // first sorting attempt
             // sort by item name length
             results.sort(function search_complete_sort1(aaa, bbb) {
-                if (searchWords[aaa[0]].length > searchWords[bbb[0]].length) {
+                if (aaa.word.length > bbb.word.length) {
                     return 1;
                 }
             });
             // second sorting attempt
             // sort by item name
             results.sort(function search_complete_sort1(aaa, bbb) {
-                if (searchWords[aaa[0]].length === searchWords[bbb[0]].length &&
-                    searchWords[aaa[0]] > searchWords[bbb[0]]) {
+                if (aaa.word.length === bbb.word.length &&
+                    aaa.word > bbb.word) {
                     return 1;
                 }
             });
             // third sorting attempt
             // sort by index of keyword in item name
-            if (results[0][1] !== -1) {
+            if (results[0].index !== -1) {
                 results.sort(function search_complete_sort1(aaa, bbb) {
-                    if (aaa[1] > bbb[1] && bbb[1] === 0) {
+                    if (aaa.index > bbb.index && bbb.index === 0) {
                         return 1;
                     }
                 });
             // fourth sorting attempt
             // sort by type
             results.sort(function search_complete_sort3(aaa, bbb) {
-                if (searchWords[aaa[0]] === searchWords[bbb[0]] &&
-                    aaa[2] > bbb[2]) {
+                if (aaa.word === bbb.word &&
+                    aaa.ty > bbb.ty) {
                     return 1;
                 }
             });
             // fifth sorting attempt
             // sort by path
             results.sort(function search_complete_sort4(aaa, bbb) {
-                if (searchWords[aaa[0]] === searchWords[bbb[0]] &&
-                    aaa[2] === bbb[2] && aaa[3] > bbb[3]) {
+                if (aaa.word === bbb.word &&
+                    aaa.ty === bbb.ty && aaa.path > bbb.path) {
                     return 1;
                 }
             });
             // sixth sorting attempt
             // remove duplicates, according to the data provided
-            for (aa = results.length - 1; aa > 0; aa -= 1) {
-                if (searchWords[results[aa][0]] === searchWords[results[aa - 1][0]] &&
-                    results[aa][2] === results[aa - 1][2] &&
-                    results[aa][3] === results[aa - 1][3])
+            for (var i = results.length - 1; i > 0; i -= 1) {
+                if (results[i].word === results[i - 1].word &&
+                    results[i].ty === results[i - 1].ty &&
+                    results[i].path === results[i - 1].path)
                 {
-                    results[aa][0] = -1;
+                    results[i].id = -1;
                 }
             }
             for (var i = 0; i < results.length; i++) {
                 var result = results[i],
-                    name = result[4].toLowerCase(),
-                    path = result[3].toLowerCase(),
-                    parent = allPaths[result[6]][result[5]];
+                    name = result.item.name.toLowerCase(),
+                    path = result.item.path.toLowerCase(),
+                    parent = allPaths[result.item.crate][result.item.parent];
 
                 var valid = validateResult(name, path, split, parent);
                 if (!valid) {
-                    result[0] = -1;
+                    result.id = -1;
                 }
             }
             return results;
             resultIndex = execQuery(query, 20000, index);
             len = resultIndex.length;
             for (i = 0; i < len; i += 1) {
-                if (resultIndex[i][0] > -1) {
-                    obj = searchIndex[resultIndex[i][0]];
+                if (resultIndex[i].id > -1) {
+                    obj = searchIndex[resultIndex[i].id];
                     filterdata.push([obj.name, obj.ty, obj.path, obj.desc]);
                     results.push(obj);
                 }
 
         // Draw a convenient sidebar of known crates if we have a listing
         if (rootPath == '../') {
-            console.log('here');
             var sidebar = $('.sidebar');
             var div = $('<div>').attr('class', 'block crate');
             div.append($('<h2>').text('Crates'));