public static DateTime ParseDateTime(string s, ComplianceTracker tracker) { int length = s.Length; if (length < 15) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateTimeLength); return(ContactCommon.MinDateTime); } string text = "yyyyMMdd"; int num = 8; if (s[4] == '-') { text = "yyyy-MM-dd"; num = 10; } if (s[num + 3] == ':') { text += "\\THH:mm:ss"; num += 9; } else { text += "\\THHmmss"; num += 7; } if (length < num) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateTimeLength); return(ContactCommon.MinDateTime); } return(ContactCommon.InternalParseDateTime(s, length, text, num, tracker)); }
internal CalendarPeriod(string s, ComplianceTracker tracker) { int num = s.IndexOf('/'); if (num <= 0 || s.Length - 1 == num) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidTimeFormat); this.start = CalendarCommon.MinDateTime; this.end = CalendarCommon.MinDateTime; this.duration = TimeSpan.Zero; this.isExplicitPeriod = false; return; } DateTime dateTime = CalendarCommon.ParseDateTime(s.Substring(0, num), tracker); char c = s[num + 1]; if (c == '+' || c == '-' || c == 'P') { TimeSpan t = CalendarCommon.ParseDuration(s.Substring(num + 1), tracker); this.start = dateTime; this.end = dateTime + t; this.duration = t; this.isExplicitPeriod = false; return; } DateTime d = CalendarCommon.ParseDateTime(s.Substring(num + 1), tracker); this.start = dateTime; this.end = d; this.duration = dateTime - d; this.isExplicitPeriod = true; }
public static TimeSpan ParseUtcOffset(string s, ComplianceTracker tracker) { int length = s.Length; if (length != 5 && length != 6) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidUtcOffsetLength); return(TimeSpan.Zero); } bool flag = false; if (s[0] == '-') { flag = true; } else if (s[0] != '+') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedPlusMinus); return(TimeSpan.Zero); } DateTime dateTime; if (!DateTime.TryParseExact(s.Substring(1), "HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime) && !DateTime.TryParseExact(s.Substring(1), "HHmm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); return(TimeSpan.Zero); } TimeSpan result = new TimeSpan(dateTime.Hour, dateTime.Minute, 0); if (flag) { return(result.Negate()); } return(result); }
public static TimeSpan ParseUtcOffset(string s, ComplianceTracker tracker) { int num = 0; int num2 = 0; int num3 = 0; int length = s.Length; if (length != 5 && length != 7) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidUtcOffsetLength); return(TimeSpan.Zero); } char c = s[0]; bool flag; if (c == '+') { flag = false; } else { if (c != '-') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedPlusMinus); return(TimeSpan.Zero); } flag = true; } for (int i = 1; i < length; i++) { c = s[i]; if ((int)c >= ContentLineParser.Dictionary.Length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } if ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) == 0) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidToken); return(TimeSpan.Zero); } } if (!int.TryParse(s.Substring(1, 2), out num) || num < 0 || num > 23) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } if (!int.TryParse(s.Substring(3, 2), out num2) || num2 < 0 || num2 > 59) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } if (length == 7 && (!int.TryParse(s.Substring(5, 2), out num3) || num3 < 0 || num3 > 59)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } if (num == 0 && num2 == 0 && num3 == 0 && flag) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } return(CalendarCommon.CreateTimeSpan(tracker, 0, num, num2, num3, flag)); }
internal CalendarTime(string s, ComplianceTracker tracker) { this.isUtc = false; if (s.Length != 6 && s.Length != 7) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidTimeStringLength); this.time = TimeSpan.Zero; return; } if (s.Length == 7) { if (s[6] != 'Z') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedZ); this.time = TimeSpan.Zero; return; } this.isUtc = true; s = s.Substring(0, 6); } DateTime dateTime; if (!DateTime.TryParseExact(s, "HHmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidTimeFormat); this.time = TimeSpan.Zero; return; } this.time = new TimeSpan(dateTime.Hour, dateTime.Minute, dateTime.Second); }
public static DateTime ParseDate(string s, ComplianceTracker tracker) { DateTime result; if (!DateTime.TryParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out result) && !DateTime.TryParseExact(s, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out result)) { return(ContactCommon.ParseDateTime(s, tracker)); } return(result); }
public static DateTime ParseDate(string s, ComplianceTracker tracker) { DateTime result; if (!DateTime.TryParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out result)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateFormat); return(CalendarCommon.MinDateTime); } return(result); }
private static TimeSpan CreateTimeSpan(ComplianceTracker tracker, int days, int hours, int minutes, int seconds, bool negative) { TimeSpan result; try { result = new TimeSpan(days, hours, minutes, seconds); } catch (ArgumentOutOfRangeException) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidTimeFormat); return(TimeSpan.Zero); } if (negative) { result = result.Negate(); } return(result); }
public static DateTime ParseDateTime(string s, ComplianceTracker tracker) { int length = s.Length; if (length != 15 && length != 16) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateTimeLength); return(CalendarCommon.MinDateTime); } DateTime dateTime = CalendarCommon.ParseDate(s.Substring(0, 8), tracker); if (s[8] != 'T') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedTAfterDate); return(CalendarCommon.MinDateTime); } CalendarTime calendarTime = new CalendarTime(s.Substring(9), tracker); return(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, calendarTime.Time.Hours, calendarTime.Time.Minutes, calendarTime.Time.Seconds, calendarTime.IsUtc ? DateTimeKind.Utc : DateTimeKind.Unspecified)); }
public static DateTime ParseTime(string s, ComplianceTracker tracker) { int length = s.Length; if (length < 6) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateTimeLength); return(ContactCommon.MinDateTime); } string format = "HHmmss"; int num = 6; if (s[2] == ':') { format = "HH:mm:ss"; num = 8; } if (length < num) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateTimeLength); return(ContactCommon.MinDateTime); } return(ContactCommon.InternalParseDateTime(s, length, format, num, tracker)); }
private static DateTime InternalParseDateTime(string s, int length, string format, int formatLength, ComplianceTracker tracker) { string text = string.Empty; string text2 = string.Empty; if (length > formatLength) { if (s[formatLength] == ',') { int num = formatLength + 1; while (num < length && char.IsDigit(s[num])) { num++; } if (num == formatLength + 1) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateFormat); return(ContactCommon.MinDateTime); } text2 = s.Substring(formatLength + 1, num - (formatLength + 1)); if (num < length) { text = s.Substring(num); } } else { text = s.Substring(formatLength); } s = s.Substring(0, formatLength); } DateTime dateTime; if (!DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out dateTime)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateFormat); return(ContactCommon.MinDateTime); } if (!string.IsNullOrEmpty(text2)) { if (text2.Length > 3) { text2 = text2.Substring(0, 3); } int num2 = 0; if (!int.TryParse(text2, out num2)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidDateFormat); return(ContactCommon.MinDateTime); } for (int i = text2.Length; i < 3; i++) { num2 *= 10; } dateTime += new TimeSpan(0, 0, 0, 0, num2); } if (!string.IsNullOrEmpty(text) && text != "Z") { dateTime += ContactCommon.ParseUtcOffset(text, tracker); } return(dateTime); }
public static TimeSpan ParseDuration(string s, ComplianceTracker tracker) { int num = 0; int length = s.Length; CalendarCommon.DurationParseStates durationParseStates = CalendarCommon.DurationParseStates.Start; StringBuilder stringBuilder = null; int num2 = 0; int num3 = 0; int hours = 0; int minutes = 0; int seconds = 0; bool negative = false; while (num < length && durationParseStates != CalendarCommon.DurationParseStates.End) { char c = s[num]; if ((int)c >= ContentLineParser.Dictionary.Length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } switch (durationParseStates) { case CalendarCommon.DurationParseStates.Start: if (c == 'P') { durationParseStates = CalendarCommon.DurationParseStates.S1; } else if (c == '+') { durationParseStates = CalendarCommon.DurationParseStates.Sign; } else { if (c != '-') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } negative = true; durationParseStates = CalendarCommon.DurationParseStates.Sign; } break; case CalendarCommon.DurationParseStates.Sign: if (c != 'P') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedP); return(TimeSpan.Zero); } durationParseStates = CalendarCommon.DurationParseStates.S1; break; case CalendarCommon.DurationParseStates.S1: if ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) != 0) { stringBuilder = new StringBuilder(); stringBuilder.Append(c); durationParseStates = CalendarCommon.DurationParseStates.S2; } else { if (c != 'T') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } durationParseStates = CalendarCommon.DurationParseStates.T1; } break; case CalendarCommon.DurationParseStates.S2: while ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) != 0) { stringBuilder.Append(c); if (++num == length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedWOrD); return(TimeSpan.Zero); } c = s[num]; if ((int)c >= ContentLineParser.Dictionary.Length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } } if (c == 'W') { if (!int.TryParse(stringBuilder.ToString(), out num3)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } durationParseStates = CalendarCommon.DurationParseStates.End; } else { if (c != 'D') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } if (!int.TryParse(stringBuilder.ToString(), out num2)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } durationParseStates = CalendarCommon.DurationParseStates.D1; } break; case CalendarCommon.DurationParseStates.D1: if (c != 'T') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedT); return(TimeSpan.Zero); } durationParseStates = CalendarCommon.DurationParseStates.T1; break; case CalendarCommon.DurationParseStates.T1: if ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) == 0) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } stringBuilder = new StringBuilder(); stringBuilder.Append(c); durationParseStates = CalendarCommon.DurationParseStates.T2; break; case CalendarCommon.DurationParseStates.T2: while ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) != 0) { stringBuilder.Append(c); if (++num == length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedHMS); return(TimeSpan.Zero); } c = s[num]; if ((int)c >= ContentLineParser.Dictionary.Length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } } if (c == 'H') { if (!int.TryParse(stringBuilder.ToString(), out hours)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } durationParseStates = CalendarCommon.DurationParseStates.H1; } else if (c == 'M') { if (!int.TryParse(stringBuilder.ToString(), out minutes)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } durationParseStates = CalendarCommon.DurationParseStates.M1; } else { if (c != 'S') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } if (!int.TryParse(stringBuilder.ToString(), out seconds)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } durationParseStates = CalendarCommon.DurationParseStates.End; } break; case CalendarCommon.DurationParseStates.H1: if ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) == 0) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } stringBuilder = new StringBuilder(); stringBuilder.Append(c); durationParseStates = CalendarCommon.DurationParseStates.H2; break; case CalendarCommon.DurationParseStates.H2: while ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) != 0) { stringBuilder.Append(c); if (++num == length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedM); return(TimeSpan.Zero); } c = s[num]; if ((int)c >= ContentLineParser.Dictionary.Length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } } if (c != 'M') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } if (!int.TryParse(stringBuilder.ToString(), out minutes)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } durationParseStates = CalendarCommon.DurationParseStates.M1; break; case CalendarCommon.DurationParseStates.M1: if ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) == 0) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } stringBuilder = new StringBuilder(); stringBuilder.Append(c); durationParseStates = CalendarCommon.DurationParseStates.M2; break; case CalendarCommon.DurationParseStates.M2: while ((byte)(ContentLineParser.Tokens.Digit & ContentLineParser.Dictionary[(int)c]) != 0) { stringBuilder.Append(c); if (++num == length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.ExpectedS); return(TimeSpan.Zero); } c = s[num]; if ((int)c >= ContentLineParser.Dictionary.Length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } } if (c != 'S') { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidCharacter); return(TimeSpan.Zero); } if (!int.TryParse(stringBuilder.ToString(), out seconds)) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); } durationParseStates = CalendarCommon.DurationParseStates.End; break; default: tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidValueFormat); return(TimeSpan.Zero); } num++; } if (num != length) { tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.DurationDataNotEndedProperly); return(TimeSpan.Zero); } if (num3 != 0) { num2 += num3 * 7; } return(CalendarCommon.CreateTimeSpan(tracker, num2, hours, minutes, seconds, negative)); }
// Token: 0x06000881 RID: 2177 RVA: 0x0002ED10 File Offset: 0x0002CF10 internal Recurrence(string s, ComplianceTracker tracker) { this.tracker = tracker; Recurrence.ParserStates parserStates = Recurrence.ParserStates.Name; int length = s.Length; string s2 = string.Empty; List <string> list = new List <string>(); int i = 0; while (i < length) { switch (parserStates) { case Recurrence.ParserStates.Name: { StringBuilder stringBuilder = new StringBuilder(); while (i < length) { char c = s[i++]; if ((int)c >= ContentLineParser.Dictionary.Length || (byte)(ContentLineParser.Dictionary[(int)c] & ContentLineParser.Tokens.ValueChar) == 0) { this.SetComplianceStatus(CalendarStrings.InvalidCharacterInRecurrence); return; } if (c == '=') { break; } stringBuilder.Append(c); } s2 = stringBuilder.ToString(); parserStates = Recurrence.ParserStates.Value; break; } case Recurrence.ParserStates.Value: { bool flag = false; StringBuilder stringBuilder = new StringBuilder(); while (i < length) { char c = s[i++]; if ((int)c >= ContentLineParser.Dictionary.Length || (byte)(ContentLineParser.Dictionary[(int)c] & ContentLineParser.Tokens.ValueChar) == 0) { this.SetComplianceStatus(CalendarStrings.InvalidCharacterInRecurrence); return; } if (c == ';') { flag = true; parserStates = Recurrence.ParserStates.Name; break; } if (c == ',') { flag = false; break; } stringBuilder.Append(c); } list.Add(stringBuilder.ToString()); if (flag || i == length) { int num = list.Count; RecurrenceProperties recurProp = Recurrence.GetRecurProp(s2); if (recurProp <= RecurrenceProperties.ByDay) { if (recurProp <= RecurrenceProperties.BySecond) { switch (recurProp) { case RecurrenceProperties.Frequency: if (num > 1) { this.SetComplianceStatus(CalendarStrings.MultivalueNotPermittedOnFreq); return; } this.freq = Recurrence.GetFrequency(list[0]); if (this.freq == Frequency.Unknown) { this.SetComplianceStatus(CalendarStrings.UnknownFrequencyValue); return; } this.props |= RecurrenceProperties.Frequency; break; case RecurrenceProperties.UntilDate: if (num > 1) { this.SetComplianceStatus(CalendarStrings.MultivalueNotPermittedOnUntil); return; } if ((this.props & RecurrenceProperties.UntilDate) != RecurrenceProperties.None || (this.props & RecurrenceProperties.UntilDateTime) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.UntilOnlyPermittedOnce); return; } if ((this.props & RecurrenceProperties.Count) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.UntilNotPermittedWithCount); return; } if (list[0].Length > 8) { this.untilDateTime = CalendarCommon.ParseDateTime(list[0], tracker); this.props |= RecurrenceProperties.UntilDateTime; } else { this.untilDate = CalendarCommon.ParseDate(list[0], tracker); this.props |= RecurrenceProperties.UntilDate; } break; case RecurrenceProperties.Frequency | RecurrenceProperties.UntilDate: goto IL_A5C; case RecurrenceProperties.Count: if ((this.props & RecurrenceProperties.Count) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.CountOnlyPermittedOnce); return; } if ((this.props & RecurrenceProperties.UntilDate) != RecurrenceProperties.None || (this.props & RecurrenceProperties.UntilDateTime) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.CountNotPermittedWithUntil); return; } if (num > 1) { this.SetComplianceStatus(CalendarStrings.MultivalueNotPermittedOnCount); return; } if (!int.TryParse(list[0], out this.count)) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } this.props |= RecurrenceProperties.Count; break; default: if (recurProp != RecurrenceProperties.Interval) { if (recurProp != RecurrenceProperties.BySecond) { goto IL_A5C; } if ((this.props & RecurrenceProperties.BySecond) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.BySecondOnlyPermittedOnce); return; } this.bySecond = new int[num]; for (int j = 0; j < num; j++) { if (!int.TryParse(list[j], out this.bySecond[j])) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } if (this.bySecond[j] < 0 || this.bySecond[j] > 59) { this.SetComplianceStatus(CalendarStrings.BySecondOutOfRange); return; } } this.props |= RecurrenceProperties.BySecond; } else { if ((this.props & RecurrenceProperties.Interval) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.IntervalOnlyPermittedOnce); return; } if (num > 1) { this.SetComplianceStatus(CalendarStrings.MultivalueNotPermittedOnInterval); return; } if (!int.TryParse(list[0], out this.interval)) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } if (this.interval < 1) { this.SetComplianceStatus(CalendarStrings.IntervalMustBePositive); return; } this.props |= RecurrenceProperties.Interval; } break; } } else if (recurProp != RecurrenceProperties.ByMinute) { if (recurProp != RecurrenceProperties.ByHour) { if (recurProp != RecurrenceProperties.ByDay) { goto IL_A5C; } if ((this.props & RecurrenceProperties.ByDay) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.ByDayOnlyPermittedOnce); return; } this.byDay = new Recurrence.ByDay[num]; for (int k = 0; k < num; k++) { string text = list[k]; if (text.Length != 0) { int num2 = 0; while (num2 < text.Length && text[num2] == ' ') { num2++; } if (num2 != text.Length) { int num3 = num2 - 1; char c2; do { c2 = text[++num3]; if ((int)c2 >= ContentLineParser.Dictionary.Length) { goto Block_53; } }while (((byte)(ContentLineParser.Dictionary[(int)c2] & ContentLineParser.Tokens.Digit) > 0 || c2 == '+' || c2 == '-') && num3 + 1 < text.Length); IL_66C: if (num3 != num2) { int num4 = 0; string s3 = text.Substring(num2, num3 - num2); if (!int.TryParse(s3, out num4) || num4 == 0) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } this.byDay[k].OccurrenceNumber = num4; } while (text[num3] == ' ' && num3 + 1 < text.Length) { num3++; } this.byDay[k].Day = this.GetDayOfWeek(text.Substring(num3, text.Length - num3)); goto IL_700; Block_53: this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); goto IL_66C; } } IL_700 :; } this.props |= RecurrenceProperties.ByDay; } else { if ((this.props & RecurrenceProperties.ByHour) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.ByHourOnlyPermittedOnce); return; } this.byHour = new int[num]; for (int l = 0; l < num; l++) { if (!int.TryParse(list[l], out this.byHour[l])) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } if (this.byHour[l] < 0 || this.byHour[l] > 23) { this.SetComplianceStatus(CalendarStrings.ByHourOutOfRange); return; } } this.props |= RecurrenceProperties.ByHour; } } else { if ((this.props & RecurrenceProperties.ByMinute) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.ByMinuteOnlyPermittedOnce); return; } this.byMinute = new int[num]; for (int m = 0; m < num; m++) { if (!int.TryParse(list[m], out this.byMinute[m])) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } if (this.byMinute[m] < 0 || this.byMinute[m] > 59) { this.SetComplianceStatus(CalendarStrings.ByMinuteOutOfRange); return; } } this.props |= RecurrenceProperties.ByMinute; } } else if (recurProp <= RecurrenceProperties.ByWeek) { if (recurProp != RecurrenceProperties.ByMonthDay) { if (recurProp != RecurrenceProperties.ByYearDay) { if (recurProp != RecurrenceProperties.ByWeek) { goto IL_A5C; } if ((this.props & RecurrenceProperties.ByWeek) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.ByWeekNoOnlyPermittedOnce); return; } this.byWeekNumber = new int[num]; for (int n = 0; n < num; n++) { int num5; if (!int.TryParse(list[n], out num5)) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } this.byWeekNumber[n] = num5; if (num5 == 0 || num5 > 53 || num5 < -53) { this.SetComplianceStatus(CalendarStrings.ByWeekNoOutOfRange); return; } } this.props |= RecurrenceProperties.ByWeek; } else { if ((this.props & RecurrenceProperties.ByYearDay) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.ByYearDayOnlyPermittedOnce); return; } this.byYearDay = new int[num]; for (int num6 = 0; num6 < num; num6++) { int num7; if (!int.TryParse(list[num6], out num7)) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } this.byYearDay[num6] = num7; if (num7 == 0 || num7 > 366 || num7 < -366) { this.SetComplianceStatus(CalendarStrings.ByYearDayOutOfRange); return; } } this.props |= RecurrenceProperties.ByYearDay; } } else { if ((this.props & RecurrenceProperties.ByMonthDay) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.ByMonthDayOnlyPermittedOnce); return; } this.byMonthDay = new int[num]; for (int num8 = 0; num8 < num; num8++) { int num9; if (!int.TryParse(list[num8], out num9)) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } this.byMonthDay[num8] = num9; if (num9 == 0 || num9 > 31 || num9 < -31) { this.SetComplianceStatus(CalendarStrings.ByMonthDayOutOfRange); return; } } this.props |= RecurrenceProperties.ByMonthDay; } } else if (recurProp != RecurrenceProperties.ByMonth) { if (recurProp != RecurrenceProperties.BySetPosition) { if (recurProp != RecurrenceProperties.WeekStart) { goto IL_A5C; } if ((this.props & RecurrenceProperties.WeekStart) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.WkStOnlyPermittedOnce); return; } if (num > 1) { this.SetComplianceStatus(CalendarStrings.MultivalueNotPermittedOnWkSt); return; } this.workWeekStart = this.GetDayOfWeek(list[0]); this.props |= RecurrenceProperties.WeekStart; } else { if ((this.props & RecurrenceProperties.BySetPosition) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.BySetPosOnlyPermittedOnce); return; } this.bySetPos = new int[num]; for (int num10 = 0; num10 < num; num10++) { int num11; if (!int.TryParse(list[num10], out num11)) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } this.bySetPos[num10] = num11; if (num11 == 0 || num11 > 366 || num11 < -366) { this.SetComplianceStatus(CalendarStrings.BySetPosOutOfRange); return; } } this.props |= RecurrenceProperties.BySetPosition; } } else { if ((this.props & RecurrenceProperties.ByMonth) != RecurrenceProperties.None) { this.SetComplianceStatus(CalendarStrings.ByMonthOnlyPermittedOnce); return; } this.byMonth = new int[num]; for (int num12 = 0; num12 < num; num12++) { int num13; if (!int.TryParse(list[num12], out num13)) { this.SetComplianceStatus(CalendarStrings.InvalidValueFormat); } this.byMonth[num12] = num13; if (num13 < 0 || num13 > 12) { this.SetComplianceStatus(CalendarStrings.ByMonthOutOfRange); return; } } this.props |= RecurrenceProperties.ByMonth; } IL_A67: list = new List <string>(); break; IL_A5C: this.SetComplianceStatus(CalendarStrings.UnknownRecurrenceProperty); goto IL_A67; } break; } } } }