CronSchedule.parse constructor

CronSchedule.parse(
  1. String cronFormat
)

Implementation

factory CronSchedule.parse(String cronFormat) {
  final parts =
      cronFormat.split(RegExp(r'\s+')).where((p) => p.isNotEmpty).toList();

  if (parts.length != 5 && parts.length != 6) {
    throw FormatException('Invalid cron expression: $cronFormat');
  }

  // A 5-field expression has no seconds field, so per standard cron
  // semantics it fires once per matching minute (at second 0), not on
  // every second of that minute.
  final fields = parts.length == 5 ? ['0', ...parts] : parts;

  return CronSchedule(
    seconds: _parseField(fields[0], 0, 59),
    minutes: _parseField(fields[1], 0, 59),
    hours: _parseField(fields[2], 0, 23),
    days: _parseField(fields[3], 1, 31),
    months: _parseField(fields[4], 1, 12),
    weekdays: _parseField(fields[5], 1, 7, isWeekday: true),
  );
}