|
9 | 9 | // except according to those terms.
|
10 | 10 |
|
11 | 11 | /*jslint browser: true, es5: true */
|
12 |
| -/*globals $: true, rootPath: true, allPaths: true */ |
| 12 | +/*globals $: true, rootPath: true */ |
13 | 13 |
|
14 | 14 | (function() {
|
15 | 15 | "use strict";
|
|
258 | 258 | var result = results[i],
|
259 | 259 | name = result.item.name.toLowerCase(),
|
260 | 260 | path = result.item.path.toLowerCase(),
|
261 |
| - parent = allPaths[result.item.crate][result.item.parent]; |
| 261 | + parent = result.item.parent; |
262 | 262 |
|
263 | 263 | var valid = validateResult(name, path, split, parent);
|
264 | 264 | if (!valid) {
|
|
294 | 294 | if ((validate) &&
|
295 | 295 | (name.toLowerCase().indexOf(keys[i]) > -1 ||
|
296 | 296 | path.toLowerCase().indexOf(keys[i]) > -1 ||
|
297 |
| - parent[1].toLowerCase().indexOf(keys[i]) > -1)) |
| 297 | + parent.name.toLowerCase().indexOf(keys[i]) > -1)) |
298 | 298 | {
|
299 | 299 | validate = true;
|
300 | 300 | } else {
|
|
422 | 422 | '/index.html" class="' + type +
|
423 | 423 | '">' + name + '</a>';
|
424 | 424 | } else if (item.parent !== undefined) {
|
425 |
| - var myparent = allPaths[item.crate][item.parent]; |
426 |
| - var parentType = myparent[0]; |
427 |
| - var parentName = myparent[1]; |
| 425 | + var myparent = item.parent; |
428 | 426 | var anchor = '#' + type + '.' + name;
|
429 |
| - output += item.path + '::' + parentName + |
| 427 | + output += item.path + '::' + myparent.name + |
430 | 428 | '::<a href="' + rootPath +
|
431 | 429 | item.path.replace(/::/g, '/') +
|
432 |
| - '/' + itemTypes[parentType] + |
433 |
| - '.' + parentName + |
| 430 | + '/' + itemTypes[myparent.ty] + |
| 431 | + '.' + myparent.name + |
434 | 432 | '.html' + anchor +
|
435 | 433 | '" class="' + type +
|
436 | 434 | '">' + name + '</a>';
|
|
538 | 536 | var searchWords = [];
|
539 | 537 | for (var crate in rawSearchIndex) {
|
540 | 538 | if (!rawSearchIndex.hasOwnProperty(crate)) { continue }
|
541 |
| - var len = rawSearchIndex[crate].length; |
542 |
| - var i = 0; |
543 | 539 |
|
| 540 | + // an array of [(Number) item type, |
| 541 | + // (String) name, |
| 542 | + // (String) full path, |
| 543 | + // (String) description, |
| 544 | + // (optional Number) the parent path index to `paths`] |
| 545 | + var items = rawSearchIndex[crate].items; |
| 546 | + // an array of [(Number) item type, |
| 547 | + // (String) name] |
| 548 | + var paths = rawSearchIndex[crate].paths; |
| 549 | + |
| 550 | + // convert `paths` into an object form |
| 551 | + var len = paths.length; |
| 552 | + for (var i = 0; i < len; ++i) { |
| 553 | + paths[i] = {ty: paths[i][0], name: paths[i][1]}; |
| 554 | + } |
| 555 | + |
| 556 | + // convert `items` into an object form, and construct word indices. |
| 557 | + // |
544 | 558 | // before any analysis is performed lets gather the search terms to
|
545 | 559 | // search against apart from the rest of the data. This is a quick
|
546 | 560 | // operation that is cached for the life of the page state so that
|
547 | 561 | // all other search operations have access to this cached data for
|
548 | 562 | // faster analysis operations
|
549 |
| - for (i = 0; i < len; i += 1) { |
550 |
| - var rawRow = rawSearchIndex[crate][i]; |
| 563 | + var len = items.length; |
| 564 | + for (var i = 0; i < len; i += 1) { |
| 565 | + var rawRow = items[i]; |
551 | 566 | var row = {crate: crate, ty: rawRow[0], name: rawRow[1],
|
552 |
| - path: rawRow[2], desc: rawRow[3], parent: rawRow[4]}; |
| 567 | + path: rawRow[2], desc: rawRow[3], |
| 568 | + parent: paths[rawRow[4]]}; |
553 | 569 | searchIndex.push(row);
|
554 | 570 | if (typeof row.name === "string") {
|
555 | 571 | var word = row.name.toLowerCase();
|
|
0 commit comments