959
960
private _findBetterContiguousSequence(originalStart: number, originalLength: number, modifiedStart: number, modifiedLength: number, desiredLength: number): [number, number] | null {
961
>
if (originalLength < desiredLength || modifiedLength < desiredLength) {
diff.ts
962
return null;
963
}
964
>
const originalMax = originalStart + originalLength - desiredLength + 1;
diff.ts
965
>
const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1;
966
>
let bestScore = 0;
967
>
let bestOriginalStart = 0;
968
>
let bestModifiedStart = 0;
969
>
for (let i = originalStart; i < originalMax; i++) {
970
>
for (let j = modifiedStart; j < modifiedMax; j++) {
971
>
const score = this._contiguousSequenceScore(i, j, desiredLength);
972
>
if (score > 0 && score > bestScore) {
973
bestScore = score;
974
bestOriginalStart = i;
975
bestModifiedStart = j;
976
}
978
>
}
979
>
if (bestScore > 0) {
980
return [bestOriginalStart, bestModifiedStart];
981
}
982
return null;
984
985
private _contiguousSequenceScore(originalStart: number, modifiedStart: number, length: number): number {
987
>
for (let l = 0; l < length; l++) {
988
>
if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) {
989
>
return 0;
990
>
}
991
>
score += this._originalStringElements[originalStart + l].length;
992
>
}
993
>
return score;
994
>
}
995
996
private _OriginalIsBoundary(index: number): boolean {