private CrontabSchedule( CrontabField minutes, CrontabField hours, CrontabField days, CrontabField months, CrontabField daysOfWeek) { Debug.Assert(minutes != null); Debug.Assert(hours != null); Debug.Assert(days != null); Debug.Assert(months != null); Debug.Assert(daysOfWeek != null); _minutes = minutes; _hours = hours; _days = days; _months = months; _daysOfWeek = daysOfWeek; }
private static ValueOrError<CrontabSchedule> TryParse(string expression, ExceptionHandler onError) { if (expression == null) throw new ArgumentNullException("expression"); var tokens = expression.Split(_separators, StringSplitOptions.RemoveEmptyEntries); if (tokens.Length != 5) { return ErrorHandling.OnError(() => new CrontabException(string.Format( "'{0}' is not a valid crontab expression. It must contain at least 5 components of a schedule " + "(in the sequence of minutes, hours, days, months, days of week).", expression)), onError); } var fields = new CrontabField[5]; for (var i = 0; i < fields.Length; i++) { var field = CrontabField.TryParse((CrontabFieldKind)i, tokens[i], onError); if (field.IsError) return field.ErrorProvider; fields[i] = field.Value; } return new CrontabSchedule(fields[0], fields[1], fields[2], fields[3], fields[4]); }
public static ValueOrError<CrontabField> TryParse(CrontabFieldKind kind, string expression, ExceptionHandler onError) { var field = new CrontabField(CrontabFieldImpl.FromKind(kind)); var error = field._impl.TryParse(expression, field.Accumulate, onError); return error == null ? field : (ValueOrError<CrontabField>)error; }