differenceNotProperlyContained method

Interval? differenceNotProperlyContained(
  1. Interval other
)

Return the interval with elements from this not in other; other must not be totally enclosed (properly contained) within this, which would result in two disjoint intervals instead of the single one returned by this method.

Implementation

Interval? differenceNotProperlyContained(Interval other) {
  Interval? diff;
  // other.a to left of this.a (or same)
  if (other.startsBeforeNonDisjoint(this)) {
    diff = Interval.of(max(a, other.b + 1), b);
  }

  // other.a to right of this.a
  else if (other.startsAfterNonDisjoint(this)) {
    diff = Interval.of(a, other.a - 1);
  }
  return diff;
}