SemanticDiff.from constructor
Create a semantic diff from raw line diffs.
Implementation
factory SemanticDiff.from(List<LineDiff> diffs) {
final blocks = <ChangeBlock>[];
var current = <LineDiff>[];
for (final diff in diffs) {
if (diff.type == DiffType.context) {
if (current.isNotEmpty) {
blocks.add(ChangeBlock(lines: List.unmodifiable(current)));
current = [];
}
} else {
current.add(diff);
}
}
if (current.isNotEmpty) {
blocks.add(ChangeBlock(lines: List.unmodifiable(current)));
}
return SemanticDiff(blocks: blocks);
}