446
447
constructor(originalLines: string[], modifiedLines: string[], opts: IDiffComputerOpts) {
449
>
this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;
450
>
this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;
451
>
this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;
452
>
this.originalLines = originalLines;
453
>
this.modifiedLines = modifiedLines;
454
>
this.original = new LineSequence(originalLines);
455
>
this.modified = new LineSequence(modifiedLines);
456
>
457
>
this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);
458
>
this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...
459
>
}
460
461
public computeDiff(): IDiffComputerResult {
463
>
if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {
464
// empty original => fast path
465
if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {