computeWordDiff function

List<WordDiff> computeWordDiff(
  1. String oldLine,
  2. String newLine
)

Compute a word-level diff between oldLine and newLine.

Implementation

List<WordDiff> computeWordDiff(String oldLine, String newLine) {
  final oldTokens = _tokenizeWords(oldLine);
  final newTokens = _tokenizeWords(newLine);
  final ops = shortestEditScript(oldTokens, newTokens);

  final result = <WordDiff>[];
  var oi = 0, ni = 0;
  for (final op in ops) {
    switch (op) {
      case EditOp.equal:
        result.add(WordDiff(text: oldTokens[oi], type: DiffType.context));
        oi++;
        ni++;
      case EditOp.delete:
        result.add(WordDiff(text: oldTokens[oi], type: DiffType.remove));
        oi++;
      case EditOp.insert:
        result.add(WordDiff(text: newTokens[ni], type: DiffType.add));
        ni++;
    }
  }
  return result;
}