Move levenshtein() and min3() into Zotero.Utilities
This commit is contained in:
parent
224d51eeb9
commit
a1e3f8aefd
|
@ -956,40 +956,12 @@ Zotero.DBConnection.prototype._getDBConnection = function () {
|
|||
// Implements mozIStorageFunction
|
||||
// TODO: move somewhere else
|
||||
var lev = {
|
||||
min3: function (a, b, c) {
|
||||
var min;
|
||||
min = a;
|
||||
if (b < min)
|
||||
min = b;
|
||||
if (c < min)
|
||||
min = c;
|
||||
return min;
|
||||
},
|
||||
ZU: new Zotero.Utilities,
|
||||
|
||||
onFunctionCall: function (arg) {
|
||||
var a = arg.getUTF8String(0);
|
||||
var b = arg.getUTF8String(1);
|
||||
|
||||
var arr = new Array(a.length+1);
|
||||
var i, j, cost;
|
||||
|
||||
for(i=0; i<=a.length; i++)
|
||||
arr[i] = new Array(b.length);
|
||||
|
||||
for (i = 0; i <= a.length; i++) {
|
||||
arr[i][0] = i;
|
||||
}
|
||||
for (j = 0; j <= b.length; j++) {
|
||||
arr[0][j] = j;
|
||||
}
|
||||
|
||||
for (i = 1; i <= a.length; i++) {
|
||||
for (j = 1; j <= b.length; j++) {
|
||||
cost = (a[i-1] == b[j-1])? 0 : 1;
|
||||
arr[i][j] = this.min3(arr[i-1][j] + 1, arr[i][j-1] + 1, arr[i-1][j-1] + cost);
|
||||
}
|
||||
}
|
||||
return arr[a.length][b.length];
|
||||
return this.ZU.levenshtein(a, b);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -251,6 +251,43 @@ Zotero.Utilities.prototype.parseMarkup = function(str) {
|
|||
}
|
||||
|
||||
|
||||
Zotero.Utilities.prototype.min3 = function (a, b, c) {
|
||||
var min;
|
||||
min = a;
|
||||
if (b < min) {
|
||||
min = b;
|
||||
}
|
||||
if (c < min) {
|
||||
min = c;
|
||||
}
|
||||
return min;
|
||||
}
|
||||
|
||||
|
||||
Zotero.Utilities.prototype.levenshtein = function (a, b) {
|
||||
var arr = new Array(a.length+1);
|
||||
var i, j, cost;
|
||||
|
||||
for(i=0; i<=a.length; i++)
|
||||
arr[i] = new Array(b.length);
|
||||
|
||||
for (i = 0; i <= a.length; i++) {
|
||||
arr[i][0] = i;
|
||||
}
|
||||
for (j = 0; j <= b.length; j++) {
|
||||
arr[0][j] = j;
|
||||
}
|
||||
|
||||
for (i = 1; i <= a.length; i++) {
|
||||
for (j = 1; j <= b.length; j++) {
|
||||
cost = (a[i-1] == b[j-1])? 0 : 1;
|
||||
arr[i][j] = this.min3(arr[i-1][j] + 1, arr[i][j-1] + 1, arr[i-1][j-1] + cost);
|
||||
}
|
||||
}
|
||||
return arr[a.length][b.length];
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Test if a string is an integer
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue
Block a user