Пример #1
0
 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));
 }
Пример #2
0
 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;
 }
Пример #3
0
        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);
        }
Пример #4
0
        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;
        }
Пример #5
0
 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;
 }
Пример #6
0
        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));
        }