179
return diff;
180
}
182
>
// Visualize `[sequence1.text, diff.seq1Range.start + deltaAfter]`
183
>
// and `[sequence2.text, diff.seq2Range.start + deltaAfter, diff.seq2Range.endExclusive + deltaAfter]`
184
>
185
>
let bestDelta = 0;
186
>
let bestScore = -1;
187
>
// find best scored delta
188
>
for (let delta = -deltaBefore; delta <= deltaAfter; delta++) {
189
>
const seq2OffsetStart = diff.seq2Range.start + delta;
190
>
const seq2OffsetEndExclusive = diff.seq2Range.endExclusive + delta;
191
>
const seq1Offset = diff.seq1Range.start + delta;
192
>
193
>
const score = sequence1.getBoundaryScore!(seq1Offset) + sequence2.getBoundaryScore!(seq2OffsetStart) + sequence2.getBoundaryScore!(seq2OffsetEndExclusive);
194
>
if (score > bestScore) {
195
>
bestScore = score;
196
>
bestDelta = delta;
197
>
}
198
>
}
199
>
200
>
return diff.delta(bestDelta);
201
>
}
202
203
export function removeShortMatches(sequence1: ISequence, sequence2: ISequence, sequenceDiffs: SequenceDiff[]): SequenceDiff[] {