Exemplo n.º 1
0
        public object BuildInput(Queue <string> tokens, ICommandCreator creator)
        {
            var model      = creator.CreateModel(_inputType);
            var responding = new List <ITokenHandler>();

            while (tokens.Any())
            {
                var handler = _handlers.FirstOrDefault(h => h.Handle(model, tokens));
                if (handler == null)
                {
                    throw new InvalidUsageException("Unknown argument or flag for value " + tokens.Peek());
                }
                responding.Add(handler);
            }

            if (!IsValidUsage(responding))
            {
                throw new InvalidUsageException();
            }

            return(model);
        }