1
>
/*---------------------------------------------------------------------------------------------
lineEdit.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { compareBy, groupAdjacentBy, numberComparator } from '../../../../base/common/arrays.js';
7
>
import { assert, checkAdjacentItems } from '../../../../base/common/assert.js';
8
>
import { splitLines } from '../../../../base/common/strings.js';
9
>
import { LineRange } from '../ranges/lineRange.js';
10
>
import { BaseStringEdit, StringEdit, StringReplacement } from './stringEdit.js';
11
>
import { Position } from '../position.js';
12
>
import { Range } from '../range.js';
13
>
import { TextReplacement, TextEdit } from './textEdit.js';
14
>
import { AbstractText } from '../text/abstractText.js';
15
>
16
>
export class LineEdit {
17
>
public static readonly empty = new LineEdit([]);
18
>
19
>
public static deserialize(data: SerializedLineEdit): LineEdit {
20
return new LineEdit(data.map(e => LineReplacement.deserialize(e)));
21
}
23
>
public static fromStringEdit(edit: BaseStringEdit, initialValue: AbstractText): LineEdit {
24
const textEdit = TextEdit.fromStringEdit(edit, initialValue);
25
return LineEdit.fromTextEdit(textEdit, initialValue);
26
}
28
>
public static fromTextEdit(edit: TextEdit, initialValue: AbstractText): LineEdit {
29
const edits = edit.replacements;
30