public void ResolveAndExecute(SentenceBuilder builder) { logger.LogWarn($"{nameof(SentenceExecutionOptions)}.{nameof(ResolveAndExecute)} is only a prototype"); foreach (var executable in this.Executables) { var name = executable.ToString().ToLower(); switch (name) { case "list": logger.LogInfo($"{nameof(SentenceExecutionOptions)}.{nameof(ResolveAndExecute)} resolved {name}"); var resolutionTarget = builder.Words.Where(x => x.Word != "list" && x.Word != "the" && x.Word != "what" && x.Word != "are").ToList(); var target = ResolveTarget(resolutionTarget); if (target == null) { logger.LogWarn($"{nameof(SentenceExecutionOptions)}.{nameof(ResolveAndExecute)} failed to resolve '{string.Join(", ", resolutionTarget.Select(x => x.Word))}'"); } else { ListTarget(target); } break; default: logger.LogWarn($"{nameof(SentenceExecutionOptions)}.{nameof(ResolveAndExecute)} failed to resolve executable {name}"); break; } } }
public void ProcessInput(string input) { logger.LogDebug($"ProcessInput:'{input}'"); TokenCollection collection = input; var sentenceBuilder = new SentenceBuilder(); foreach (var token in collection.TextTokens) { string nomalized = token.Normalize(); var def = EnglishDictionary.Lookup(nomalized); if (def == null) { logger.LogWarn($"Defintion for {nomalized} not found"); } else { logger.LogDebug($"Defintion for {nomalized}: {def.ToJson()}"); sentenceBuilder.Add(def); } } SentenceExecutionOptions executionOptions = sentenceBuilder.BuildOptions(); if (executionOptions.IsExecutable()) { executionOptions.ResolveAndExecute(sentenceBuilder); } }