SemanticDiff.from constructor

SemanticDiff.from(
  1. List<LineDiff> diffs
)

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);
}