DiffReviewDocument constructor
DiffReviewDocument({})
Snapshots parsed files and builds a source index independent of layout.
Implementation
DiffReviewDocument({
required this.id,
required this.revision,
required Iterable<DiffFile> files,
}) : files = List.unmodifiable(
files.map(
(file) => DiffFile(
oldPath: file.oldPath,
newPath: file.newPath,
lines: List.unmodifiable(file.lines),
),
),
) {
for (final file in this.files) {
for (final line in file.lines) {
if (line.type != DiffLineType.context &&
line.type != DiffLineType.added &&
line.type != DiffLineType.removed) {
continue;
}
final left = line.oldLineNumber == null
? null
: DiffCommentLineKey(
path: file.oldPath,
line: line.oldLineNumber!,
side: DiffCommentSide.left,
);
final right = line.newLineNumber == null
? null
: DiffCommentLineKey(
path: file.newPath,
line: line.newLineNumber!,
side: DiffCommentSide.right,
);
if (left == null && right == null) continue;
_rows.add((left: left, right: right));
if (left != null) _keys.add(left);
if (right != null) _keys.add(right);
if (left != null && right != null) {
_counterparts[left] = right;
_counterparts[right] = left;
}
}
}
for (final key in _keys) {
_keysByFileSide.putIfAbsent((key.path, key.side), () => []).add(key);
}
for (final keys in _keysByFileSide.values) {
keys.sort((a, b) => a.line.compareTo(b.line));
}
}