Browse Source

Expose the internal entity type readers (#986)

* Expose the internal entity type readers

* Add BestMatch property to TypeReaderResult for easily accessing the parsed object
tags/2.0
Joe4evr Christopher F 7 years ago
parent
commit
660fec0cbc
5 changed files with 13 additions and 9 deletions
  1. +2
    -2
      src/Discord.Net.Commands/Readers/ChannelTypeReader.cs
  2. +2
    -2
      src/Discord.Net.Commands/Readers/MessageTypeReader.cs
  3. +2
    -2
      src/Discord.Net.Commands/Readers/RoleTypeReader.cs
  4. +2
    -2
      src/Discord.Net.Commands/Readers/UserTypeReader.cs
  5. +5
    -1
      src/Discord.Net.Commands/Results/TypeReaderResult.cs

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

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -6,7 +6,7 @@ using System.Threading.Tasks;

namespace Discord.Commands
{
internal class ChannelTypeReader<T> : TypeReader
public class ChannelTypeReader<T> : TypeReader
where T : class, IChannel
{
public override async Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)


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

@@ -1,10 +1,10 @@
using System;
using System;
using System.Globalization;
using System.Threading.Tasks;

namespace Discord.Commands
{
internal class MessageTypeReader<T> : TypeReader
public class MessageTypeReader<T> : TypeReader
where T : class, IMessage
{
public override async Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)


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

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -6,7 +6,7 @@ using System.Threading.Tasks;

namespace Discord.Commands
{
internal class RoleTypeReader<T> : TypeReader
public class RoleTypeReader<T> : TypeReader
where T : class, IRole
{
public override Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)


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

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Globalization;
@@ -7,7 +7,7 @@ using System.Threading.Tasks;

namespace Discord.Commands
{
internal class UserTypeReader<T> : TypeReader
public class UserTypeReader<T> : TypeReader
where T : class, IUser
{
public override async Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)


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

@@ -1,7 +1,8 @@
using System;
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics;
using System.Linq;

namespace Discord.Commands
{
@@ -30,6 +31,9 @@ namespace Discord.Commands
public string ErrorReason { get; }

public bool IsSuccess => !Error.HasValue;
public object BestMatch => IsSuccess
? (Values.Count == 1 ? Values.Single().Value : Values.OrderByDescending(v => v.Score).First().Value)
: throw new InvalidOperationException("TypeReaderResult was not successful.");

private TypeReaderResult(IReadOnlyCollection<TypeReaderValue> values, CommandError? error, string errorReason)
{


Loading…
Cancel
Save