addPeriod method

void addPeriod(
  1. String code,
  2. RegExpMatch match
)

Helper to add periods of time to the change indicator.

Implementation

void addPeriod(String code, RegExpMatch match) {
  _code = '${_code!} $code';

  // The middle time between self._init_period and self._end_period
  final middleTime = _initPeriod.time.add(const Duration(hours: 1));

  final prefix = match.namedGroup('prefix');
  final hour = match.namedGroup('hour');
  final minute = match.namedGroup('min');

  final hourAsInt = int.parse(hour!);
  final minAsInt = int.parse(minute!);

  late final DateTime time;
  late final int minutes;

  if (hourAsInt == _initPeriod.hour) {
    minutes = minAsInt - _initPeriod.minute;
    time = _initPeriod.time.add(Duration(minutes: minutes));
  } else if (hourAsInt == middleTime.hour) {
    minutes = minAsInt - middleTime.minute;
    time = middleTime.add(Duration(minutes: minutes));
  } else {
    minutes = minAsInt - _endPeriod.minute;
    time = _endPeriod.time.add(Duration(minutes: minutes));
  }

  if (prefix == 'FM') {
    _from = Time(time: time);
  } else if (prefix == 'TL') {
    _until = Time(time: time);
  } else {
    _at = Time(time: time);
  }
}