public override void ExitEveryday(GoldenFoxLanguageParser.EverydayContext context)
 {
     while (Current.Timestamps.Any())
     {
         _stack.Push(new Day(Current.Timestamps.Pop()));
     }
 }
        public override void ExitDatetime(GoldenFoxLanguageParser.DatetimeContext context)
        {
            var date = Current.Dates.Pop();

            var dateTime = new ExtendedDateTime();
            if (Current.Timestamps.Any())
            {
                dateTime.DateTime = date.SetTime(Current.Timestamps.Pop());
            }
            else
            {
                dateTime.DateTime = date;
                dateTime.TimeNotSpecified();
            }

            Current.DateTimes.Push(dateTime);
        }
 public override void ExitBetween(GoldenFoxLanguageParser.BetweenContext context)
 {
     var second = Current.Timestamps.Pop();
     var first = Current.Timestamps.Pop();
     Current.Constraints.Push(new Between(first, second));
 }
 public override void EnterUntil(GoldenFoxLanguageParser.UntilContext context)
 {
     _contexts.Push(new Context());
 }
 public override void EnterSchedule(GoldenFoxLanguageParser.ScheduleContext context)
 {
     _contexts.Push(new Context());
 }
 public override void EnterFrom(GoldenFoxLanguageParser.FromContext context)
 {
     _contexts.Push(new Context());
 }
 private DayOfWeek ParseWeekDay(GoldenFoxLanguageParser.WeekdayContext weekdayContext)
 {
     DayOfWeek dayOfWeek;
     Enum.TryParse(weekdayContext.GetText().Capitalize(), out dayOfWeek);
     return dayOfWeek;
 }
        public override void ExitEverysecond(GoldenFoxLanguageParser.EverysecondContext context)
        {
            var second = new Second();
            while (Current.Constraints.Any())
            {
                second.AddConstraint(Current.Constraints.Pop());
            }

            _stack.Push(second);
        }
 public override void ExitTime(GoldenFoxLanguageParser.TimeContext context)
 {
     Current.Timestamps.Push(context.ParseTime());
 }
Пример #10
0
 public override void ExitSecondsOffset(GoldenFoxLanguageParser.SecondsOffsetContext context)
 {
     Current.SecondsOffset.Push(context.INT().AsInt());
 }
Пример #11
0
        public override void ExitSchedule(GoldenFoxLanguageParser.ScheduleContext context)
        {
            while (_stack.Any())
            {
                Add(_stack.Pop());
            }

            _contexts.Pop();
        }
Пример #12
0
        public override void ExitNumberedweekday(GoldenFoxLanguageParser.NumberedweekdayContext context)
        {
            var index = 0;
            if (context.numberedDay() != null)
            {
                index = context.numberedDay().INT().AsInt();
                if (context.Last() != null)
                {
                    index = 7 - index + 1;
                }

                index = index % 7;
            }

            var constraints = new List<IConstraint>();
            while (Current.Constraints.Any())
            {
                constraints.Add(Current.Constraints.Pop());
            }

            while (Current.Timestamps.Any())
            {
                var interval = new Weekday((DayOfWeek)index, Current.Timestamps.Pop());
                interval.AddConstraints(constraints);
                _stack.Push(interval);
            }
        }
Пример #13
0
 public override void ExitMinutesOffset(GoldenFoxLanguageParser.MinutesOffsetContext context)
 {
     Current.SecondsOffset.Push((context.INT(0).AsInt() * 60) + (context.INT().Length == 2 ? context.INT(1).AsInt() : 0));
 }
Пример #14
0
 public override void ExitFrom(GoldenFoxLanguageParser.FromContext context)
 {
     var extDateTime = Current.DateTimes.Pop();
     var datetime = extDateTime.DateTime;
     var from = new From(datetime);
     _contexts.Pop();
     Current.Constraints.Push(from);
 }
Пример #15
0
 public override void ExitDate(GoldenFoxLanguageParser.DateContext context)
 {
     var date = new DateTime(context.INT(0).AsInt(), context.INT(1).AsInt(), context.INT(2).AsInt());
     Current.Dates.Push(date);
 }
Пример #16
0
        public override void ExitUntil(GoldenFoxLanguageParser.UntilContext context)
        {
            var extDateTime = Current.DateTimes.Pop();
            var datetime = extDateTime.DateTime;
            if (!extDateTime.TimeSpecified)
            {
                datetime = datetime.AddDays(1).AddSeconds(-1);
            }

            var until = new Until(datetime);
            _contexts.Pop();
            Current.Constraints.Push(until);
        }
Пример #17
0
        public override void ExitWeekdays(GoldenFoxLanguageParser.WeekdaysContext context)
        {
            var constraints = new List<IConstraint>();
            while (Current.Constraints.Any())
            {
                constraints.Add(Current.Constraints.Pop());
            }

            while (Current.Timestamps.Any())
            {
                var interval = new Weekday(ParseWeekDay(context.weekday()), Current.Timestamps.Pop());
                interval.AddConstraints(constraints);
                _stack.Push(interval);
            }
        }
Пример #18
0
        public override void ExitEveryhour(GoldenFoxLanguageParser.EveryhourContext context)
        {
            if (!Current.SecondsOffset.Any())
            {
                Current.SecondsOffset.Push(0);
            }

            var constraints = new List<IConstraint>();
            while (Current.Constraints.Any())
            {
                constraints.Add(Current.Constraints.Pop());
            }

            while (Current.SecondsOffset.Any())
            {

                var hour = new Hour { OffsetInSeconds = Current.SecondsOffset.Pop() };
                if (constraints.Any())
                {
                    hour.AddConstraints(constraints);
                }

                _stack.Push(hour);
            }
        }
Пример #19
0
        public override void ExitEveryminute(GoldenFoxLanguageParser.EveryminuteContext context)
        {
            if (!Current.SecondsOffset.Any())
            {
                Current.SecondsOffset.Push(0);
            }

            var constraints = new List<IConstraint>();
            while (Current.Constraints.Any())
            {
                constraints.Add(Current.Constraints.Pop());
            }

            while (Current.SecondsOffset.Any())
            {
                var min = new Minute { OffsetInSeconds = Current.SecondsOffset.Pop() };
                if (constraints.Any())
                {
                    min.AddConstraints(constraints);
                }

                _stack.Push(min);
            }
        }