Browse Source

Cleaned up Command Result structs

tags/1.0-rc
RogueException 9 years ago
parent
commit
e452aa9662
7 changed files with 22 additions and 19 deletions
  1. +3
    -1
      src/Discord.Net.Commands/Command.cs
  2. +2
    -2
      src/Discord.Net.Commands/CommandService.cs
  3. +4
    -6
      src/Discord.Net.Commands/Results/ExecuteResult.cs
  4. +3
    -5
      src/Discord.Net.Commands/Results/ParseResult.cs
  5. +4
    -2
      src/Discord.Net.Commands/Results/PreconditionResult.cs
  6. +4
    -2
      src/Discord.Net.Commands/Results/SearchResult.cs
  7. +2
    -1
      src/Discord.Net.Commands/Results/TypeReaderResult.cs

+ 3
- 1
src/Discord.Net.Commands/Command.cs View File

@@ -61,10 +61,12 @@ namespace Discord.Commands
return PreconditionResult.FromSuccess(); return PreconditionResult.FromSuccess();
} }


public async Task<ParseResult> Parse(IMessage msg, SearchResult searchResult)
public async Task<ParseResult> Parse(IMessage msg, SearchResult searchResult, PreconditionResult? preconditionResult = null)
{ {
if (!searchResult.IsSuccess) if (!searchResult.IsSuccess)
return ParseResult.FromError(searchResult); return ParseResult.FromError(searchResult);
if (preconditionResult != null && !preconditionResult.Value.IsSuccess)
return ParseResult.FromError(preconditionResult.Value);


return await CommandParser.ParseArgs(this, msg, searchResult.Text.Substring(Text.Length), 0).ConfigureAwait(false); return await CommandParser.ParseArgs(this, msg, searchResult.Text.Substring(Text.Length), 0).ConfigureAwait(false);
} }


+ 2
- 2
src/Discord.Net.Commands/CommandService.cs View File

@@ -209,7 +209,6 @@ namespace Discord.Commands
return searchResult; return searchResult;


var commands = searchResult.Commands; var commands = searchResult.Commands;

for (int i = commands.Count - 1; i >= 0; i--) for (int i = commands.Count - 1; i >= 0; i--)
{ {
var preconditionResult = await commands[i].CheckPreconditions(message); var preconditionResult = await commands[i].CheckPreconditions(message);
@@ -221,7 +220,7 @@ namespace Discord.Commands
continue; continue;
} }


var parseResult = await commands[i].Parse(message, searchResult);
var parseResult = await commands[i].Parse(message, searchResult, preconditionResult);
if (!parseResult.IsSuccess) if (!parseResult.IsSuccess)
{ {
if (commands.Count == 1) if (commands.Count == 1)
@@ -229,6 +228,7 @@ namespace Discord.Commands
else else
continue; continue;
} }

var executeResult = await commands[i].Execute(message, parseResult); var executeResult = await commands[i].Execute(message, parseResult);
return executeResult; return executeResult;
} }


+ 4
- 6
src/Discord.Net.Commands/Results/ExecuteResult.cs View File

@@ -20,15 +20,13 @@ namespace Discord.Commands
ErrorReason = errorReason; ErrorReason = errorReason;
} }


internal static ExecuteResult FromSuccess()
public static ExecuteResult FromSuccess()
=> new ExecuteResult(null, null, null); => new ExecuteResult(null, null, null);
internal static ExecuteResult FromError(CommandError error, string reason)
public static ExecuteResult FromError(CommandError error, string reason)
=> new ExecuteResult(null, error, reason); => new ExecuteResult(null, error, reason);
internal static ExecuteResult FromError(Exception ex)
public static ExecuteResult FromError(Exception ex)
=> new ExecuteResult(ex, CommandError.Exception, ex.Message); => new ExecuteResult(ex, CommandError.Exception, ex.Message);
internal static ExecuteResult FromError(ParseResult result)
=> new ExecuteResult(null, result.Error, result.ErrorReason);
internal static ExecuteResult FromError(PreconditionResult result)
public static ExecuteResult FromError(IResult result)
=> new ExecuteResult(null, result.Error, result.ErrorReason); => new ExecuteResult(null, result.Error, result.ErrorReason);
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";


+ 3
- 5
src/Discord.Net.Commands/Results/ParseResult.cs View File

@@ -20,13 +20,11 @@ namespace Discord.Commands
ErrorReason = errorReason; ErrorReason = errorReason;
} }


internal static ParseResult FromSuccess(IReadOnlyList<object> values)
public static ParseResult FromSuccess(IReadOnlyList<object> values)
=> new ParseResult(values, null, null); => new ParseResult(values, null, null);
internal static ParseResult FromError(CommandError error, string reason)
public static ParseResult FromError(CommandError error, string reason)
=> new ParseResult(null, error, reason); => new ParseResult(null, error, reason);
internal static ParseResult FromError(SearchResult result)
=> new ParseResult(null, result.Error, result.ErrorReason);
internal static ParseResult FromError(TypeReaderResult result)
public static ParseResult FromError(IResult result)
=> new ParseResult(null, result.Error, result.ErrorReason); => new ParseResult(null, result.Error, result.ErrorReason);


public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";


+ 4
- 2
src/Discord.Net.Commands/Results/PreconditionResult.cs View File

@@ -16,10 +16,12 @@ namespace Discord.Commands
ErrorReason = errorReason; ErrorReason = errorReason;
} }


internal static PreconditionResult FromSuccess()
public static PreconditionResult FromSuccess()
=> new PreconditionResult(null, null); => new PreconditionResult(null, null);
internal static PreconditionResult FromError(string reason)
public static PreconditionResult FromError(string reason)
=> new PreconditionResult(CommandError.UnmetPrecondition, reason); => new PreconditionResult(CommandError.UnmetPrecondition, reason);
public static PreconditionResult FromError(IResult result)
=> new PreconditionResult(result.Error, result.ErrorReason);


public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
private string DebuggerDisplay => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; private string DebuggerDisplay => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";


+ 4
- 2
src/Discord.Net.Commands/Results/SearchResult.cs View File

@@ -22,10 +22,12 @@ namespace Discord.Commands
ErrorReason = errorReason; ErrorReason = errorReason;
} }


internal static SearchResult FromSuccess(string text, IReadOnlyList<Command> commands)
public static SearchResult FromSuccess(string text, IReadOnlyList<Command> commands)
=> new SearchResult(text, commands, null, null); => new SearchResult(text, commands, null, null);
internal static SearchResult FromError(CommandError error, string reason)
public static SearchResult FromError(CommandError error, string reason)
=> new SearchResult(null, null, error, reason); => new SearchResult(null, null, error, reason);
public static SearchResult FromError(IResult result)
=> new SearchResult(null, null, result.Error, result.ErrorReason);


public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
private string DebuggerDisplay => IsSuccess ? $"Success ({Commands.Count} Results)" : $"{Error}: {ErrorReason}"; private string DebuggerDisplay => IsSuccess ? $"Success ({Commands.Count} Results)" : $"{Error}: {ErrorReason}";


+ 2
- 1
src/Discord.Net.Commands/Results/TypeReaderResult.cs View File

@@ -1,5 +1,4 @@
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.InteropServices;


namespace Discord.Commands namespace Discord.Commands
{ {
@@ -24,6 +23,8 @@ namespace Discord.Commands
=> new TypeReaderResult(value, null, null); => new TypeReaderResult(value, null, null);
public static TypeReaderResult FromError(CommandError error, string reason) public static TypeReaderResult FromError(CommandError error, string reason)
=> new TypeReaderResult(null, error, reason); => new TypeReaderResult(null, error, reason);
public static TypeReaderResult FromError(IResult result)
=> new TypeReaderResult(null, result.Error, result.ErrorReason);


public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
private string DebuggerDisplay => IsSuccess ? $"Success ({Value})" : $"{Error}: {ErrorReason}"; private string DebuggerDisplay => IsSuccess ? $"Success ({Value})" : $"{Error}: {ErrorReason}";


Loading…
Cancel
Save