79
return new LinesDiff(changes, [], result.quitEarly);
80
}
82
>
83
>
export interface IDiffComputationResult {
84
>
quitEarly: boolean;
85
>
identical: boolean;
86
>
87
>
/**
88
>
* The changes as (legacy) line change array.
89
>
* @deprecated Use `changes2` instead.
90
>
*/
91
>
changes: ILineChange[];
92
>
93
>
/**
94
>
* The changes as (modern) line range mapping array.
95
>
*/
96
>
changes2: readonly DetailedLineRangeMapping[];
97
>
}
98
>
99
>
/**
100
>
* A change
101
>
*/
102
>
export interface IChange {
103
>
readonly originalStartLineNumber: number;
104
>
readonly originalEndLineNumber: number;
105
>
readonly modifiedStartLineNumber: number;
106
>
readonly modifiedEndLineNumber: number;
107
>
}
108
>
109
>
/**
110
>
* A character level change.
111
>
*/
112
>
export interface ICharChange extends IChange {
113
>
readonly originalStartColumn: number;
114
>
readonly originalEndColumn: number;
115
>
readonly modifiedStartColumn: number;
116
>
readonly modifiedEndColumn: number;
117
>
}
118
>
119
>
/**
120
>
* A line change
121
>
*/
122
>
export interface ILineChange extends IChange {
123
>
readonly charChanges: ICharChange[] | undefined;
124
>
}
125
>
126
>
export interface IDiffComputerResult {
127
>
quitEarly: boolean;
128
>
changes: ILineChange[];
129
>
}
130
>
131
function computeDiff(originalSequence: ISequence, modifiedSequence: ISequence, continueProcessingPredicate: () => boolean, pretty: boolean): IDiffResult {
132
const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);
133
return diffAlgo.ComputeDiff(pretty);
134
}
136
>
class LineSequence implements ISequence {
137
>
138
>
public readonly lines: string[];
139
>
private readonly _startColumns: number[];
140
>
private readonly _endColumns: number[];
141
>
142
>
constructor(lines: string[]) {
143
const startColumns: number[] = [];
144
const endColumns: number[] = [];