public ICommandDescriptor Execute(ref string input) { if (string.IsNullOrEmpty(input)) { return(null); } var firstToken = input.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(); if (string.IsNullOrEmpty(firstToken)) { return(null); } var noun = firstToken.SelectHumps(_commandRepository.Nouns).OneOrDefault(); if (noun == null) { return(null); } var command = _commandRepository.Distinct(CommandDescriptorComparer.VerbNoun).Where(x => x != null && x.Noun.EqualsNoCase(noun) && x.IsDefault).OneOrDefault(); if (command != null) { input = input.TrimStart().Substring(noun.Length).TrimStart(); } return(command); }
public ICommandDescriptor FindCommand(string verbNounToken) { var commands = _commands.Distinct(CommandDescriptorComparer.VerbNoun).ToDictionary(x => x.Verb + "-" + x.Noun); var matching = verbNounToken.Contains('-') ? verbNounToken.SelectHumps(commands.Keys).SingleOrDefault() : null; return(matching == null ? null : commands[matching]); }