20 lines
858 B
Dart
20 lines
858 B
Dart
import '../../../../api/marianumconnect/queries/timetable_get_week/timetable_get_week_response.dart';
|
|
|
|
final RegExp _whitespaceRun = RegExp(r'\s+');
|
|
|
|
/// Collapses any line-break or whitespace run to a single space and trims.
|
|
/// Returns null when input is null or fully whitespace. Webuntis sometimes
|
|
/// returns multi-line values like "A30\n4" — this normalizes those so labels
|
|
/// render on a single line.
|
|
String? collapseWhitespace(String? s) {
|
|
if (s == null) return null;
|
|
final cleaned = s.replaceAll(_whitespaceRun, ' ').trim();
|
|
return cleaned.isEmpty ? null : cleaned;
|
|
}
|
|
|
|
/// "7a, 7b" — shared by the calendar tile factory and the home-widget mapper
|
|
/// so both surfaces render identical class labels on teacher plans.
|
|
extension LessonClassLabel on McTimetableEntry {
|
|
String? get classLabel => collapseWhitespace(classNames.join(', '));
|
|
}
|