subtract method

List<SubRange> subtract(
  1. SubRange range
)

Returns subtraction of SubRanges as an array of SubRanges. (There's a case where subtraction divides it in 2)

Implementation

List<SubRange> subtract(SubRange range) {
  if (range.covers(this)) {
    return [];
  } else if (range.isInside(this)) {
    return [
      SubRange(low, range.low - 1),
      SubRange(range.high + 1, high),
    ];
  } else if (range.low <= low) {
    return [SubRange(range.high + 1, high)];
  } else {
    return [SubRange(low, range.low - 1)];
  }
}