-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDiffFileUtils.ts
More file actions
57 lines (52 loc) · 1.92 KB
/
Copy pathDiffFileUtils.ts
File metadata and controls
57 lines (52 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { DiffFile, DiffBlock, DiffLine, LineType } from "diff2html/lib/types";
export const getNewFileForDiff = (fileDiff: DiffFile): string => {
return fileDiff.newName;
};
export const getOldFileForDiff = (fileDiff: DiffFile): string => {
return fileDiff.oldName;
};
export const getDiffLinesForDiffFile = (fileDiff: DiffFile): DiffLine[] => {
const allDiffLines: DiffLine[] = [];
// get the array of inserted lines indicated by the git diff
const diffBlocks: DiffBlock[] = fileDiff.blocks;
for (const diffBlock of diffBlocks) {
// list of lines that have diffs or are relevant as context
const diffLines: DiffLine[] = diffBlock.lines;
for (const diffLine of diffLines) {
allDiffLines.push(diffLine);
}
}
return allDiffLines;
};
/**
* Collect all line numbers for a diff that were inserted.
* These belong to the new file pointed to by DiffFile.newName
* @param fileDiff
* @returns line numbers for the diff that correspond to inserted lines
*/
export const getInsertedLineNumbersForFile = (fileDiff: DiffFile): number[] => {
const insertedLineNumbers: number[] = [];
const diffLines: DiffLine[] = getDiffLinesForDiffFile(fileDiff);
for (const diffLine of diffLines) {
if (diffLine.type == LineType.INSERT) {
insertedLineNumbers.push(diffLine.newNumber);
}
}
return insertedLineNumbers;
};
/**
* Collect all line numbers for a diff that were deleted.
* These belong to the new file pointed to by DiffFile.oldName
* @param fileDiff DiffFile object
* @returns line numbers for the diff that correspond to deleted lines
*/
export const getDeletedLineNumbersForFile = (fileDiff: DiffFile): number[] => {
const deletedLineNumbers: number[] = [];
const diffLines: DiffLine[] = getDiffLinesForDiffFile(fileDiff);
for (const diffLine of diffLines) {
if (diffLine.type == LineType.DELETE) {
deletedLineNumbers.push(diffLine.oldNumber);
}
}
return deletedLineNumbers;
};