public CommandInitializationRequest( Type commandType, object commandInstance, TokenizedCommand tokenizedCommand, ICommandParseRequest parseRequest) { CommandType = commandType; CommandInstance = commandInstance; TokenizedCommand = tokenizedCommand; ParseRequest = parseRequest; }
/// <inheritdoc /> public CommandTokenizeStageResult Tokenize(ICommandParseRequest request) { EnsureSettingsValid(Settings); if (string.IsNullOrWhiteSpace(request.Input)) { return(CommandTokenizeStageResult.Failed("Команда не задана")); } var normalizedInput = StringNormalizationRegex .Replace(request.Input, " ") .Trim(); if (!TryExtractCommandVerb(normalizedInput, out var verb)) { return(CommandTokenizeStageResult.Failed("Команда имеет некорректный формат")); } if (!TryExtractCommandQuery(normalizedInput, verb, out var commandQuery)) { return(CommandTokenizeStageResult.Failed("Команда имеет некорректный формат")); } var errors = new List <string>(); var argumentTokens = new List <TokenizedCommand.ArgumentToken>(); foreach (var queryArgument in ExtractQueryArguments(commandQuery)) { if (!TrySeparateArgumentKeyValue(queryArgument, out var key, out var value)) { errors.Add($"Параметр '{queryArgument}' имеет некорректный формат. " + "Ожидаемый формат параметра команды " + $"'{Settings.ArgumentKeyPrefix}ключ значение'"); continue; } argumentTokens.Add(new TokenizedCommand.ArgumentToken(key, value)); } if (errors.Count > 0) { return(CommandTokenizeStageResult.Failed(errors.ToArray())); } return(CommandTokenizeStageResult.Tokenized(new TokenizedCommand(verb, argumentTokens))); }
public CommandTokenizeStageResult Tokenize(ICommandParseRequest request) { return(_sourceTokenizer.Tokenize(request)); }