This commit is contained in:
59
node_modules/licia/levenshtein.js
generated
vendored
Normal file
59
node_modules/licia/levenshtein.js
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
var vector = [];
|
||||
var bChars = [];
|
||||
|
||||
exports = function(a, b) {
|
||||
if (a === b) return 0;
|
||||
|
||||
if (a.length > b.length) {
|
||||
var tmp = a;
|
||||
a = b;
|
||||
b = tmp;
|
||||
}
|
||||
var aLen = a.length;
|
||||
var bLen = b.length;
|
||||
if (!aLen) return bLen;
|
||||
if (!bLen) return aLen;
|
||||
|
||||
while (aLen > 0 && a.charCodeAt(aLen - 1) === b.charCodeAt(bLen - 1)) {
|
||||
aLen--;
|
||||
bLen--;
|
||||
}
|
||||
if (!aLen) return bLen;
|
||||
|
||||
var start = 0;
|
||||
while (start < aLen && a.charCodeAt(start) === b.charCodeAt(start)) {
|
||||
start++;
|
||||
}
|
||||
aLen -= start;
|
||||
bLen -= start;
|
||||
if (!aLen) return bLen;
|
||||
var current = 0;
|
||||
var left;
|
||||
var above;
|
||||
var charA;
|
||||
var i = 0;
|
||||
while (i < bLen) {
|
||||
bChars[i] = b.charCodeAt(start + i);
|
||||
vector[i] = ++i;
|
||||
}
|
||||
|
||||
for (var _i = 0; _i < aLen; _i++) {
|
||||
left = _i;
|
||||
current = _i + 1;
|
||||
charA = a.charCodeAt(start + _i);
|
||||
for (var j = 0; j < bLen; j++) {
|
||||
above = current;
|
||||
current = left;
|
||||
left = vector[j];
|
||||
if (charA !== bChars[j]) {
|
||||
if (left < current) current = left;
|
||||
if (above < current) current = above;
|
||||
current++;
|
||||
}
|
||||
vector[j] = current;
|
||||
}
|
||||
}
|
||||
return current;
|
||||
};
|
||||
|
||||
module.exports = exports;
|
||||
Reference in New Issue
Block a user