Beispiel #1
0
        public static (SortedList <int, ITask>, List <IOption>) Parse(string[] args, ITaskValidator taskValidator)
        {
            // parse commands
            if (args.Length == 0)
            {
                ConsoleLog.WriteError($">> No arguments.");
                return(null, null);
            }

            var taskTypes = new List <TaskTypes>();
            var options   = new List <IOption>();

            foreach (var arg in args)
            {
                var command = Commands.TryGetCommand(arg);
                if (command != null)
                {
                    taskTypes.Add(command.TaskType);
                }
                else
                {
                    var option = OptionFactory.Find(arg);
                    if (option != null)
                    {
                        options.Add(option);
                    }
                }
            }

            if (!taskValidator.ValidateTasks(taskTypes))
            {
                throw new ArgumentException($"Provided commands are invalid, check command line");
            }

            return(TaskFactory.CreateTasks(taskTypes, options), options);
        }
 public MultiDirectionsTasksFactory(IRandomPicker randomPicker, ITaskValidator taskValidator, ISynonymSelector synonymSelector)
     : base(randomPicker, taskValidator, synonymSelector)
 {
 }