commit 47137121c187fb9b34f9cf8cb81293ce687b84c2
parent cf34397d9e064cc07b4dd65f95beb12c1e11be65
Author: Dan Stillman <dstillman@zotero.org>
Date: Mon, 23 Jun 2008 20:33:57 +0000
Move levenshtein() and min3() into Zotero.Utilities
Diffstat:
2 files changed, 39 insertions(+), 30 deletions(-)
diff --git a/chrome/content/zotero/xpcom/db.js b/chrome/content/zotero/xpcom/db.js
@@ -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);
}
};
diff --git a/chrome/content/zotero/xpcom/utilities.js b/chrome/content/zotero/xpcom/utilities.js
@@ -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
*/