159 lines
3.9 KiB
TypeScript
159 lines
3.9 KiB
TypeScript
// Metro module 14711 (f14712).
|
|
const calculateJaroWinklerDistance = function calculateJaroWinklerDistance(a0, a1) {
|
|
let r48, r82, r110, length2, length4, length6, length7;
|
|
const r1 = Math.floor(Math.max(a0.length, a1.length) / 2) - 1;
|
|
const r30 = [];
|
|
const r12 = 0 < a0.length;
|
|
let r2 = 0;
|
|
let r32 = 0;
|
|
let r10 = 0;
|
|
if (r12) {
|
|
do {
|
|
let r35 = Math.max(0, r2 - r1);
|
|
const r36 = Math;
|
|
const length = a1.length;
|
|
const r6 = r2 + r1;
|
|
const r39 = r36.min(length, r6);
|
|
const r40 = r2;
|
|
const r5 = r32;
|
|
let r4 = r5;
|
|
if (r35 <= r39) {
|
|
do {
|
|
const r41 = a0[r40];
|
|
const r42 = a1[r35];
|
|
const r43 = r35;
|
|
if (r41 === r42 && !r30[r43]) {
|
|
r30[r43] = true;
|
|
r4 = r5 + 1;
|
|
break;
|
|
}
|
|
r35 = r43 + 1;
|
|
r48 = Math.min(a1.length, r6);
|
|
r4 = r5;
|
|
} while (r35 <= r48);
|
|
}
|
|
r2 = r40 + 1;
|
|
length2 = a0.length;
|
|
r32 = r4;
|
|
r10 = r32;
|
|
} while (r2 < length2);
|
|
}
|
|
if (!(0 < r10)) {
|
|
return 0;
|
|
}
|
|
const r59 = Math.floor(Math.max(a0.length, a1.length) / 2) - 1;
|
|
const r60 = [];
|
|
const r62 = 0 < a0.length;
|
|
let r64 = "";
|
|
let r65 = 0;
|
|
let r66 = "";
|
|
if (r62) {
|
|
do {
|
|
let r23 = Math.max(0, r65 - r59);
|
|
const r24 = Math;
|
|
const length3 = a1.length;
|
|
const r72 = r65 + r59;
|
|
const r73 = r24.min(length3, r72);
|
|
const r74 = r64;
|
|
const r75 = r65;
|
|
let r76 = r74;
|
|
if (r23 <= r73) {
|
|
do {
|
|
const r26 = a0[r75];
|
|
const r25 = a1[r23];
|
|
const r77 = r23;
|
|
if (r26 === r25 && !r60[r77]) {
|
|
r76 = r74 + a0[r75];
|
|
r60[r77] = true;
|
|
break;
|
|
}
|
|
r23 = r77 + 1;
|
|
r82 = Math.min(a1.length, r72);
|
|
r76 = r74;
|
|
} while (r23 <= r82);
|
|
}
|
|
r65 = r75 + 1;
|
|
length4 = a0.length;
|
|
r64 = r76;
|
|
r66 = r64;
|
|
} while (r65 < length4);
|
|
}
|
|
const r84 = [];
|
|
const r86 = 0 < a1.length;
|
|
let r87 = "";
|
|
let r88 = 0;
|
|
let r89 = "";
|
|
if (r86) {
|
|
do {
|
|
let r93 = Math.max(0, r88 - r59);
|
|
const r94 = Math;
|
|
const length5 = a0.length;
|
|
const r97 = r88 + r59;
|
|
const r98 = r94.min(length5, r97);
|
|
const r99 = r87;
|
|
const r100 = r88;
|
|
let r101 = r99;
|
|
if (r93 <= r98) {
|
|
do {
|
|
const r102 = a1[r100];
|
|
const r103 = a0[r93];
|
|
const r104 = r93;
|
|
if (r102 === r103 && !r84[r104]) {
|
|
r101 = r99 + a1[r100];
|
|
r84[r104] = true;
|
|
break;
|
|
}
|
|
r93 = r104 + 1;
|
|
r110 = Math.min(a0.length, r97);
|
|
r101 = r99;
|
|
} while (r93 <= r110);
|
|
}
|
|
r88 = r100 + 1;
|
|
length6 = a1.length;
|
|
r87 = r101;
|
|
r89 = r87;
|
|
} while (r88 < length6);
|
|
}
|
|
const r113 = 0 < r66.length;
|
|
let r114 = 0;
|
|
let r115 = 0;
|
|
let r116 = 0;
|
|
if (r113) {
|
|
do {
|
|
const r117 = r66[r114];
|
|
const r118 = r89[r114];
|
|
const r119 = r114;
|
|
const r120 = r115;
|
|
const r121 = r117 !== r118 ? r120 + 1 : r120;
|
|
r114 = r119 + 1;
|
|
length7 = r66.length;
|
|
r115 = r121;
|
|
r116 = r115;
|
|
} while (r114 < length7);
|
|
}
|
|
const r136 = (r10 / a0.length + r10 / a1.length + (r10 - Math.floor(r116 / 2)) / r10) / 3;
|
|
let r139 = 0;
|
|
if (r136 < 0.7) {
|
|
return r136;
|
|
}
|
|
while (true) {
|
|
const r140 = a0[r139];
|
|
const r141 = a1[r139];
|
|
const r142 = r139;
|
|
let r143 = r142;
|
|
if (r140 === r141) {
|
|
const r144 = r142 + 1;
|
|
r139 = r144;
|
|
if (r139 < 4) {
|
|
continue;
|
|
}
|
|
r143 = r144 + 1;
|
|
}
|
|
return r136 + 0.1 * r143 * (1 - r136);
|
|
}
|
|
};
|
|
export function calculateJaroWinklerSimilarity(a0, a1, a2) {
|
|
const caseSensitive = (a2 == null ? {} : a2).caseSensitive;
|
|
return caseSensitive !== void 0 && caseSensitive ? calculateJaroWinklerDistance(a0, a1) : calculateJaroWinklerDistance(a0.toLowerCase(), a1.toLowerCase());
|
|
}
|