getNewRanges function

Ranges? getNewRanges(
  1. Ranges ranges,
  2. Ranges newRanges
)

Normalizes ranges by sorting and merging overlapping or adjacent ones.

Returns a new normalized list with the merged values. Returns null if the new ranges do not change the existing ones.

Implementation

Ranges? getNewRanges(
  Ranges ranges,
  Ranges newRanges,
) {
  if (newRanges.isEmpty) {
    return null;
  }

  if (ranges.isEmpty) {
    return newRanges;
  }

  final combinedRanges = normalizeRanges([...ranges, ...newRanges]);
  if (combinedRanges.length != ranges.length) {
    return combinedRanges;
  }

  for (var i = 0; i < ranges.length; i++) {
    if (ranges[i] != combinedRanges[i]) {
      return combinedRanges;
    }
  }

  return null;
}