|
353 | 353 | * This code is an unmodified version of the code written by Marco de Wit
|
354 | 354 | * and was found at http://stackoverflow.com/a/18514751/745719
|
355 | 355 | */
|
356 |
| - var levenshtein = (function() { |
357 |
| - var row2 = []; |
358 |
| - return function(s1, s2) { |
359 |
| - if (s1 === s2) { |
360 |
| - return 0; |
| 356 | + var levenshtein_row2 = []; |
| 357 | + function levenshtein(s1, s2) { |
| 358 | + if (s1 === s2) { |
| 359 | + return 0; |
| 360 | + } |
| 361 | + var s1_len = s1.length, s2_len = s2.length; |
| 362 | + if (s1_len && s2_len) { |
| 363 | + var i1 = 0, i2 = 0, a, b, c, c2, row = levenshtein_row2; |
| 364 | + while (i1 < s1_len) { |
| 365 | + row[i1] = ++i1; |
361 | 366 | }
|
362 |
| - var s1_len = s1.length, s2_len = s2.length; |
363 |
| - if (s1_len && s2_len) { |
364 |
| - var i1 = 0, i2 = 0, a, b, c, c2, row = row2; |
365 |
| - while (i1 < s1_len) { |
366 |
| - row[i1] = ++i1; |
367 |
| - } |
368 |
| - while (i2 < s2_len) { |
369 |
| - c2 = s2.charCodeAt(i2); |
370 |
| - a = i2; |
371 |
| - ++i2; |
372 |
| - b = i2; |
373 |
| - for (i1 = 0; i1 < s1_len; ++i1) { |
374 |
| - c = a + (s1.charCodeAt(i1) !== c2 ? 1 : 0); |
375 |
| - a = row[i1]; |
376 |
| - b = b < a ? (b < c ? b + 1 : c) : (a < c ? a + 1 : c); |
377 |
| - row[i1] = b; |
378 |
| - } |
| 367 | + while (i2 < s2_len) { |
| 368 | + c2 = s2.charCodeAt(i2); |
| 369 | + a = i2; |
| 370 | + ++i2; |
| 371 | + b = i2; |
| 372 | + for (i1 = 0; i1 < s1_len; ++i1) { |
| 373 | + c = a + (s1.charCodeAt(i1) !== c2 ? 1 : 0); |
| 374 | + a = row[i1]; |
| 375 | + b = b < a ? (b < c ? b + 1 : c) : (a < c ? a + 1 : c); |
| 376 | + row[i1] = b; |
379 | 377 | }
|
380 |
| - return b; |
381 | 378 | }
|
382 |
| - return s1_len + s2_len; |
383 |
| - }; |
384 |
| - })(); |
| 379 | + return b; |
| 380 | + } |
| 381 | + return s1_len + s2_len; |
| 382 | + } |
385 | 383 |
|
386 | 384 | function initSearch(rawSearchIndex) {
|
387 | 385 | var currentResults, index, searchIndex;
|
|
400 | 398 | /**
|
401 | 399 | * Executes the query and builds an index of results
|
402 | 400 | * @param {[Object]} query [The user query]
|
403 |
| - * @param {[type]} max [The maximum results returned] |
404 | 401 | * @param {[type]} searchWords [The list of search words to query
|
405 | 402 | * against]
|
406 | 403 | * @return {[type]} [A search index of results]
|
407 | 404 | */
|
408 |
| - function execQuery(query, max, searchWords) { |
| 405 | + function execQuery(query, searchWords) { |
| 406 | + function itemTypeFromName(typename) { |
| 407 | + for (var i = 0; i < itemTypes.length; ++i) { |
| 408 | + if (itemTypes[i] === typename) { |
| 409 | + return i; |
| 410 | + } |
| 411 | + } |
| 412 | + return -1; |
| 413 | + } |
| 414 | + |
409 | 415 | var valLower = query.query.toLowerCase(),
|
410 | 416 | val = valLower,
|
411 | 417 | typeFilter = itemTypeFromName(query.type),
|
|
1021 | 1027 | return true;
|
1022 | 1028 | }
|
1023 | 1029 |
|
1024 |
| - function getQuery() { |
1025 |
| - var matches, type, query, raw = |
1026 |
| - document.getElementsByClassName('search-input')[0].value; |
| 1030 | + function getQuery(raw) { |
| 1031 | + var matches, type, query; |
1027 | 1032 | query = raw;
|
1028 | 1033 |
|
1029 | 1034 | matches = query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);
|
|
1227 | 1232 | }
|
1228 | 1233 |
|
1229 | 1234 | function showResults(results) {
|
1230 |
| - var output, query = getQuery(); |
| 1235 | + var output, query = getQuery(document.getElementsByClassName('search-input')[0].value); |
1231 | 1236 |
|
1232 | 1237 | currentResults = query.id;
|
1233 | 1238 | output = '<h1>Results for ' + escape(query.query) +
|
|
1271 | 1276 | resultIndex;
|
1272 | 1277 | var params = getQueryStringParams();
|
1273 | 1278 |
|
1274 |
| - query = getQuery(); |
| 1279 | + query = getQuery(document.getElementsByClassName('search-input')[0].value); |
1275 | 1280 | if (e) {
|
1276 | 1281 | e.preventDefault();
|
1277 | 1282 | }
|
|
1293 | 1298 | }
|
1294 | 1299 | }
|
1295 | 1300 |
|
1296 |
| - results = execQuery(query, 20000, index); |
| 1301 | + results = execQuery(query, index); |
1297 | 1302 | showResults(results);
|
1298 | 1303 | }
|
1299 | 1304 |
|
1300 |
| - function itemTypeFromName(typename) { |
1301 |
| - for (var i = 0; i < itemTypes.length; ++i) { |
1302 |
| - if (itemTypes[i] === typename) { |
1303 |
| - return i; |
1304 |
| - } |
1305 |
| - } |
1306 |
| - return -1; |
1307 |
| - } |
1308 |
| - |
1309 | 1305 | function buildIndex(rawSearchIndex) {
|
1310 | 1306 | searchIndex = [];
|
1311 | 1307 | var searchWords = [];
|
|
0 commit comments