A factory class to build ITextToSchedule instances.
 public static void ScheduleJob(this IScheduler scheduler, JobKey jobKey, string scheduleText, TimeZoneInfo timeZone)
 {
     TextToScheduleFactory factory = new TextToScheduleFactory();
     var english = factory.CreateEnglishParser();
     var results = english.Parse(scheduleText, timeZone);
     results.ScheduleWithJobKey(scheduler, jobKey);
 }
        public static void ScheduleJob(this IScheduler scheduler, JobKey jobKey, string scheduleText, TimeZoneInfo timeZone)
        {
            TextToScheduleFactory factory = new TextToScheduleFactory();
            var english = factory.CreateEnglishParser();
            var results = english.Parse(scheduleText, timeZone);

            results.ScheduleWithJobKey(scheduler, jobKey);
        }
        public static bool IsValidScheduleText(this IScheduler scheduler, string scheduleText)
        {
            TextToScheduleFactory factory = new TextToScheduleFactory();
            var english = factory.CreateEnglishParser();

            try
            {
                return(english.IsValid(scheduleText));
            }
            catch
            {
                return(false);
            }
        }
        public static bool IsValidScheduleText(this IScheduler scheduler, string scheduleText)
        {
            TextToScheduleFactory factory = new TextToScheduleFactory();
            var english = factory.CreateEnglishParser();

            try
            {
                return english.IsValid(scheduleText);
            }
            catch
            {
                return false;
            }
        }
        private static void InputChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            var m = (sender) as Model;
            m.Triggers.Clear();

            TextToScheduleResults results = null;

            TextToScheduleFactory parserFactory = new TextToScheduleFactory();
            var englishParser = parserFactory.CreateEnglishParser();
            var germanParser = parserFactory.CreateGermanParser();

            ITextToSchedule textToSchedule = new MultiTextToSchedule(
                    parserFactory.CreateEnglishParser(),
                    parserFactory.CreateGermanParser(),
                    parserFactory.CreateCronParser());

            string text = m.Input;
            results = textToSchedule.Parse(text, m.TimeZone);

            if (results != null)
            {
                List<DateTimeOffset> list = new List<DateTimeOffset>();

                foreach (var groups in results.RegisterGroups)
	            {
                    var trigger = (IOperableTrigger)groups.TriggerBuilder.Build();

                    var dates = TriggerUtils.ComputeFireTimes(trigger, groups.Calendar, MaxResultsToReturn);

                    foreach (var d in dates)
                    {
                        list.Add(TimeZoneUtil.ConvertTime(d, m.TimeZone));
                    }
	            }

                //sort the list
                list.Sort();

                foreach (var item in list.Take(MaxResultsToReturn))
                {
                    m.Triggers.Add(item.ToString("ddd, MM/dd/yyyy hh:mm:ss tt (zzz)"));
                }
            }
        }
 public static ITextToSchedule CreateGermanParser(this TextToScheduleFactory factory)
 {
     return(new TextToSchedule(
                new GermanGrammar(),
                new GermanGrammarHelper()));
 }