NCrontab.Advanced.CrontabSchedule.ParseToDictionary C# (CSharp) Метод

ParseToDictionary() приватный статический Метод

private static ParseToDictionary ( string cron, CronStringFormat format ) : List>.Dictionary
cron string
format CronStringFormat
Результат List>.Dictionary
        private static Dictionary<CrontabFieldKind, List<ICronFilter>> ParseToDictionary(string cron, CronStringFormat format)
        {
            if (cron.IsNullOrWhiteSpace())
                throw new CrontabException("The provided cron string is null, empty or contains only whitespace");

            var fields = new Dictionary<CrontabFieldKind, List<ICronFilter>>();

            var instructions = cron.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries);

            var expectedCount = Constants.ExpectedFieldCounts[format];
            if (instructions.Length > expectedCount)
                throw new CrontabException(string.Format("The provided cron string <{0}> has too many parameters", cron));
            if (instructions.Length < expectedCount)
                throw new CrontabException(string.Format("The provided cron string <{0}> has too few parameters", cron));

            var defaultFieldOffset = 0;
            if (format == CronStringFormat.WithSeconds || format == CronStringFormat.WithSecondsAndYears)
            {
                fields.Add(CrontabFieldKind.Second, ParseField(instructions[0], CrontabFieldKind.Second));
                defaultFieldOffset = 1;
            }

            fields.Add(CrontabFieldKind.Minute, ParseField(instructions[defaultFieldOffset + 0], CrontabFieldKind.Minute));
            fields.Add(CrontabFieldKind.Hour, ParseField(instructions[defaultFieldOffset + 1], CrontabFieldKind.Hour));
            fields.Add(CrontabFieldKind.Day, ParseField(instructions[defaultFieldOffset + 2], CrontabFieldKind.Day));
            fields.Add(CrontabFieldKind.Month, ParseField(instructions[defaultFieldOffset + 3], CrontabFieldKind.Month));
            fields.Add(CrontabFieldKind.DayOfWeek, ParseField(instructions[defaultFieldOffset + 4], CrontabFieldKind.DayOfWeek));

            if (format == CronStringFormat.WithYears || format == CronStringFormat.WithSecondsAndYears)
                fields.Add(CrontabFieldKind.Year, ParseField(instructions[defaultFieldOffset + 5], CrontabFieldKind.Year));

            CheckForIllegalFilters(fields);

            return fields;
        }