|
361 | 361 | }
|
362 | 362 |
|
363 | 363 | function findArg(obj, val) {
|
| 364 | + var lev_distance = MAX_LEV_DISTANCE + 1; |
364 | 365 | if (obj && obj.type && obj.type.inputs.length > 0) {
|
365 | 366 | for (var i = 0; i < obj.type.inputs.length; i++) {
|
366 | 367 | if (obj.type.inputs[i].name === val) {
|
367 |
| - return true; |
| 368 | + // No need to check anything else: we found it. Let's just move on. |
| 369 | + return 0; |
| 370 | + } |
| 371 | + var tmp = levenshtein(obj.type.inputs[i].name, val); |
| 372 | + if (tmp < lev_distance) { |
| 373 | + lev_distance = tmp; |
368 | 374 | }
|
369 | 375 | }
|
370 | 376 | }
|
371 |
| - return false; |
| 377 | + return lev_distance; |
372 | 378 | }
|
373 | 379 |
|
374 | 380 | function checkReturned(obj, val) {
|
375 |
| - return obj && obj.type && obj.type.output && |
376 |
| - obj.type.output.name.toLowerCase() === val; |
| 381 | + if (obj && obj.type && obj.type.output) { |
| 382 | + if (obj.type.output.name.toLowerCase() === val) { |
| 383 | + return 0; |
| 384 | + } |
| 385 | + return levenshtein(obj.type.output.name.toLowerCase(), val); |
| 386 | + } |
| 387 | + return MAX_LEV_DISTANCE + 1; |
377 | 388 | }
|
378 | 389 |
|
379 | 390 | function typePassesFilter(filter, type) {
|
|
489 | 500 | });
|
490 | 501 | }
|
491 | 502 | } else if (
|
492 |
| - (lev_distance = levenshtein(searchWords[j], val)) <= |
493 |
| - MAX_LEV_DISTANCE) { |
| 503 | + (lev_distance = levenshtein(searchWords[j], val)) <= MAX_LEV_DISTANCE) { |
494 | 504 | if (typePassesFilter(typeFilter, searchIndex[j].ty)) {
|
495 | 505 | results.push({
|
496 | 506 | id: j,
|
|
499 | 509 | lev: lev_distance,
|
500 | 510 | });
|
501 | 511 | }
|
502 |
| - } else if (findArg(searchIndex[j], val)) { |
| 512 | + } else if ( |
| 513 | + (lev_distance = findArg(searchIndex[j], val)) <= MAX_LEV_DISTANCE) { |
503 | 514 | if (typePassesFilter(typeFilter, searchIndex[j].ty)) {
|
504 | 515 | results.push({
|
505 | 516 | id: j,
|
|
508 | 519 | lev: lev_distance,
|
509 | 520 | });
|
510 | 521 | }
|
511 |
| - } else if (checkReturned(searchIndex[j], val)) { |
| 522 | + } else if ( |
| 523 | + (lev_distance = checkReturned(searchIndex[j], val)) <= |
| 524 | + MAX_LEV_DISTANCE) { |
512 | 525 | if (typePassesFilter(typeFilter, searchIndex[j].ty)) {
|
513 | 526 | results.push({
|
514 | 527 | id: j,
|
|
0 commit comments