courseMeetingEndPeriod function
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];
}