|
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