class CodeRay::Scanners::Diff

def diff a, b

def diff a, b
  # i will be the index of the leftmost difference from the left.
  i_max = [a.size, b.size].min
  i = 0
  i += 1 while i < i_max && a[i] == b[i]
  # j_min will be the index of the leftmost difference from the right.
  j_min = i - i_max
  # j will be the index of the rightmost difference from the right which
  # does not precede the leftmost one from the left.
  j = -1
  j -= 1 while j >= j_min && a[j] == b[j]
  return a[0...i], a[i..j], b[i..j], (j < -1) ? a[j+1..-1] : ''
end