|
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