courseMeetingEndPeriod function

Period courseMeetingEndPeriod({
  1. required Period startPeriod,
  2. required int span,
  3. required bool crossesNoon,
})

Returns the final period occupied by a merged course-table cell.

Implementation

Period courseMeetingEndPeriod({
  required Period startPeriod,
  required int span,
  required bool crossesNoon,
}) {
  if (span < 1) {
    throw ArgumentError.value(span, 'span', 'Must be at least 1');
  }

  var endIndex = startPeriod.index + span - 1;
  if (crossesNoon && endIndex >= Period.nPeriod.index) endIndex++;
  if (endIndex >= Period.values.length) {
    throw RangeError.range(
      endIndex,
      0,
      Period.values.length - 1,
      'span',
      'Course meeting extends beyond period D',
    );
  }

  return Period.values[endIndex];
}