levenshtein function

int levenshtein(
  1. List<Diff> diffs
)

Compute the Levenshtein distance; the number of inserted, deleted or substituted characters.

diffs is a List of Diff objects.

Returns the number of changes.

Implementation

int levenshtein(List<Diff> diffs) {
  var levenshtein = 0;
  var insertions = 0;
  var deletions = 0;
  for (var aDiff in diffs) {
    switch (aDiff.operation) {
      case DIFF_INSERT:
        insertions += aDiff.text.length;
        break;
      case DIFF_DELETE:
        deletions += aDiff.text.length;
        break;
      case DIFF_EQUAL:
        // A deletion and an insertion is one substitution.
        levenshtein += max<int>(insertions, deletions);
        insertions = 0;
        deletions = 0;
        break;
    }
  }
  levenshtein += max<int>(insertions, deletions);
  return levenshtein;
}