diff --git a/telethon_generator/data/html/js/search.js b/telethon_generator/data/html/js/search.js
index 3e24bf0c..6c7f2207 100644
--- a/telethon_generator/data/html/js/search.js
+++ b/telethon_generator/data/html/js/search.js
@@ -78,32 +78,41 @@ if (typeof prependPath !== 'undefined') {
}
// Assumes haystack has no whitespace and both are lowercase.
+//
+// Returns the penalty for finding the needle in the haystack
+// or -1 if the needle wasn't found at all.
function find(haystack, needle) {
if (needle.length == 0) {
return true;
}
var hi = 0;
var ni = 0;
+ var penalty = 0;
+ var started = false;
while (true) {
while (needle[ni] < 'a' || needle[ni] > 'z') {
++ni;
if (ni == needle.length) {
- return true;
+ return penalty;
}
}
while (haystack[hi] != needle[ni]) {
++hi;
+ if (started) {
+ ++penalty;
+ }
if (hi == haystack.length) {
- return false;
+ return -1;
}
}
++hi;
++ni;
+ started = true;
if (ni == needle.length) {
- return true;
+ return penalty;
}
if (hi == haystack.length) {
- return false;
+ return -1;
}
}
}
@@ -117,7 +126,8 @@ function getSearchArray(original, originalu, query) {
var destinationu = [];
for (var i = 0; i < original.length; ++i) {
- if (find(original[i].toLowerCase(), query)) {
+ var penalty = find(original[i].toLowerCase(), query);
+ if (penalty > -1 && penalty < original[i].length / 3) {
destination.push(original[i]);
destinationu.push(originalu[i]);
}