Ejemplo n.º 1
0
        private string autoCompleteParameters(string incompleteCommand)
        {
            var splitBySpace = incompleteCommand.Split(space, StringSplitOptions.RemoveEmptyEntries);

            if (splitBySpace.Length == 0 || splitBySpace.Length > 2)
            {
                return(incompleteCommand);
            }

            var command           = splitBySpace[0];
            var parameterPrefixes = ConsoleCommands.ParameterPrefixesFor(command);

            if (parameterPrefixes == null)
            {
                logger.Info($"> {incompleteCommand}");
                logger.Warn("No parameters for command known.");
                return(incompleteCommand);
            }

            var parameter = splitBySpace.Length > 1 ? splitBySpace[1] : "";
            var extended  = parameterPrefixes.ExtendPrefix(parameter);

            if (extended == null)
            {
                logger.Info($"> {incompleteCommand}");
                logger.Warn("No matching parameters found.");
                return(incompleteCommand);
            }

            if (parameterPrefixes.Contains(extended))
            {
                return($"{command} {extended} ");
            }

            if (extended != parameter)
            {
                return($"{command} {extended}");
            }

            var availableParameters = parameterPrefixes.AllKeys(extended);

            logger.Info($"> {command} {extended}");
            foreach (var p in availableParameters)
            {
                logger.Info(p);
            }

            return($"{command} {extended}");
        }