private static IEnumerable<Match> MatchCommands(CommandParameters parameters, int argCount, CommandHandlerDescriptor descriptor, Func<ICommandHandler> handlerFactory) { foreach (var commandDescriptor in descriptor.Commands) { var names = commandDescriptor.Name.Split(' '); if (!parameters.Arguments.Take(argCount).SequenceEqual(names, StringComparer.OrdinalIgnoreCase)) { // leading arguments not equal to command name continue; } yield return new Match { Context = new CommandContext { Arguments = parameters.Arguments.Skip(names.Count()), Command = string.Join(" ", names), CommandDescriptor = commandDescriptor, Input = parameters.Input, Output = parameters.Output, Switches = parameters.Switches, }, CommandHandlerFactory = handlerFactory }; } }
private static IEnumerable <Match> MatchCommands(CommandParameters parameters, int argCount, CommandHandlerDescriptor descriptor, Func <ICommandHandler> handlerFactory) { foreach (var commandDescriptor in descriptor.Commands) { var names = commandDescriptor.Name.Split(' '); if (!parameters.Arguments.Take(argCount).SequenceEqual(names, StringComparer.OrdinalIgnoreCase)) { // leading arguments not equal to command name continue; } yield return(new Match { Context = new CommandContext { Arguments = parameters.Arguments.Skip(names.Count()), Command = string.Join(" ", names), CommandDescriptor = commandDescriptor, Input = parameters.Input, Output = parameters.Output, Switches = parameters.Switches, }, CommandHandlerFactory = handlerFactory }); } }