protected override Span NextSpan(Pointer.Type pointer) { if (_start == null) { if (pointer == Pointer.Type.Future) { var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday); saturdayRepeater.Now = Now; var nextSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Future); _start = nextSaturdaySpan.Start.Value; } else if (pointer == Pointer.Type.Past) { var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday); saturdayRepeater.Now = Now.Value.AddSeconds(RepeaterDay.DAY_SECONDS); var lastSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Past); _start = lastSaturdaySpan.Start.Value; } } else { var direction = (pointer == Pointer.Type.Future) ? 1 : -1; _start = _start.Value.AddSeconds(direction * RepeaterWeek.WEEK_SECONDS); } return new Span( _start.Value, _start.Value.AddSeconds(RepeaterWeekend.WEEKEND_SECONDS)); }
protected override Span CurrentSpan(Pointer.Type pointer) { Span thisSpan; if (pointer == Pointer.Type.Future || pointer == Pointer.Type.None) { var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday); saturdayRepeater.Now = Now; var thisSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Future); thisSpan = new Span( thisSaturdaySpan.Start.Value, thisSaturdaySpan.Start.Value.AddSeconds(WEEKEND_SECONDS)); } else if (pointer == Pointer.Type.Past) { var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday); saturdayRepeater.Now = Now; var lastSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Past); thisSpan = new Span( lastSaturdaySpan.Start.Value, lastSaturdaySpan.Start.Value.AddSeconds(RepeaterWeekend.WEEKEND_SECONDS)); } else { throw new ArgumentException("Unable to handle pointer " + pointer + ".", "pointer"); } return thisSpan; }
static ITag ScanDayNames(Token token, Options options) { ITag tag = null; DayPatterns.ForEach(item => { if (item.Pattern.IsMatch(token.Value)) { tag = new RepeaterDayName(item.Day); return; } }); return(tag); }
protected override Span CurrentSpan(Pointer.Type pointer) { Span thisWeekSpan; DateTime thisWeekStart; DateTime thisWeekEnd; var now = Now.Value; if (pointer == Pointer.Type.Future) { thisWeekStart = Time.New(now, now.Hour).AddHours(1); var sundayRepeater = new RepeaterDayName(DayOfWeek.Sunday); sundayRepeater.Now = now; var thisSundaySpan = sundayRepeater.GetCurrentSpan(Pointer.Type.Future); thisWeekEnd = thisSundaySpan.Start.Value; thisWeekSpan = new Span(thisWeekStart, thisWeekEnd); } else if (pointer == Pointer.Type.Past) { thisWeekEnd = now; var sundayRepeater = new RepeaterDayName(DayOfWeek.Sunday); sundayRepeater.Now = now; var lastSundaySpan = sundayRepeater.GetNextSpan(Pointer.Type.Past); thisWeekStart = lastSundaySpan.Start.Value; thisWeekSpan = new Span(thisWeekStart, thisWeekEnd); } else if (pointer == Pointer.Type.None) { var sundayRepeater = new RepeaterDayName(DayOfWeek.Sunday); sundayRepeater.Now = now; Span lastSundaySpan = sundayRepeater.GetNextSpan(Pointer.Type.Past); thisWeekStart = lastSundaySpan.Start.Value; thisWeekEnd = thisWeekStart.AddDays(RepeaterWeek.WEEK_DAYS); thisWeekSpan = new Span(thisWeekStart, thisWeekEnd); } else { throw new ArgumentException("Unable to handle pointer " + pointer + ".", "pointer"); } return thisWeekSpan; }
static ITag ScanDayNames(Token token, Options options) { ITag tag = null; DayPatterns.ForEach(item => { if (item.Pattern.IsMatch(token.Value)) { tag = new RepeaterDayName(item.Day); return; } }); return tag; }
protected override Span NextSpan(Pointer.Type pointer) { if (_start == null) { if (pointer == Pointer.Type.Future) { var sundayRepeater = new RepeaterDayName(DayOfWeek.Sunday); sundayRepeater.Now = Now; Span nextSundaySpan = sundayRepeater.GetNextSpan(Pointer.Type.Future); _start = nextSundaySpan.Start.Value; } else if (pointer == Pointer.Type.Past) { var sundayRepeater = new RepeaterDayName(DayOfWeek.Sunday); sundayRepeater.Now = Now.Value.AddDays(1); sundayRepeater.GetNextSpan(Pointer.Type.Past); var lastSundaySpan = sundayRepeater.GetNextSpan(Pointer.Type.Past); _start = lastSundaySpan.Start.Value; } else { throw new ArgumentException("Unable to handle pointer " + pointer + ".", "pointer"); } } else { int direction = (pointer == Pointer.Type.Future) ? 1 : -1; _start.Value.AddDays(RepeaterWeek.WEEK_DAYS * direction); } return new Span(_start.Value, _start.Value.AddDays(RepeaterWeek.WEEK_DAYS)); }