Browse Source

Cleaned up alias permutations, fixed empty aliases

tags/1.0-rc
RogueException 8 years ago
parent
commit
c1a9bdc142
4 changed files with 26 additions and 23 deletions
  1. +5
    -1
      src/Discord.Net.Commands/Builders/CommandBuilder.cs
  2. +6
    -2
      src/Discord.Net.Commands/Builders/ModuleBuilder.cs
  3. +13
    -18
      src/Discord.Net.Commands/Info/CommandInfo.cs
  4. +2
    -2
      src/Discord.Net.Commands/Info/ModuleInfo.cs

+ 5
- 1
src/Discord.Net.Commands/Builders/CommandBuilder.cs View File

@@ -72,7 +72,11 @@ namespace Discord.Commands.Builders

public CommandBuilder AddAliases(params string[] aliases)
{
_aliases.AddRange(aliases);
for (int i = 0; i < aliases.Length; i++)
{
if (!_aliases.Contains(aliases[i]))
_aliases.Add(aliases[i]);
}
return this;
}
public CommandBuilder AddPrecondition(PreconditionAttribute precondition)


+ 6
- 2
src/Discord.Net.Commands/Builders/ModuleBuilder.cs View File

@@ -58,9 +58,13 @@ namespace Discord.Commands.Builders
return this;
}

public ModuleBuilder AddAlias(params string[] newAliases)
public ModuleBuilder AddAlias(params string[] aliases)
{
_aliases.AddRange(newAliases);
for (int i = 0; i < aliases.Length; i++)
{
if (!_aliases.Contains(aliases[i]))
_aliases.Add(aliases[i]);
}
return this;
}
public ModuleBuilder AddPrecondition(PreconditionAttribute precondition)


+ 13
- 18
src/Discord.Net.Commands/Info/CommandInfo.cs View File

@@ -41,24 +41,19 @@ namespace Discord.Commands

RunMode = (builder.RunMode == RunMode.Default ? service._defaultRunMode : builder.RunMode);
Priority = builder.Priority;

// both command and module provide aliases
if (module.Aliases.Count > 0 && builder.Aliases.Count > 0)
{
Aliases = module.Aliases
.Permutate(builder.Aliases, (first, second) => second != null ? first + service._separatorChar + second : first)
.Select(x => service._caseSensitive ? x : x.ToLowerInvariant())
.ToImmutableArray();
}
// only module provides aliases
else if (module.Aliases.Count > 0)
Aliases = module.Aliases.Select(x => service._caseSensitive ? x : x.ToLowerInvariant()).ToImmutableArray();
// only command provides aliases
else if (builder.Aliases.Count > 0)
Aliases = builder.Aliases.Select(x => service._caseSensitive ? x : x.ToLowerInvariant()).ToImmutableArray();
// neither provide aliases
else
throw new InvalidOperationException("Cannot build a command without any aliases");
Aliases = module.Aliases
.Permutate(builder.Aliases, (first, second) =>
{
if (first == "")
return second;
else if (second == "")
return first;
else
return first + service._separatorChar + second;
})
.Select(x => service._caseSensitive ? x : x.ToLowerInvariant())
.ToImmutableArray();

Preconditions = builder.Preconditions.ToImmutableArray();



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

@@ -15,7 +15,7 @@ namespace Discord.Commands
public string Remarks { get; }

public IReadOnlyList<string> Aliases { get; }
public IEnumerable<CommandInfo> Commands { get; }
public IReadOnlyList<CommandInfo> Commands { get; }
public IReadOnlyList<PreconditionAttribute> Preconditions { get; }
public IReadOnlyList<ModuleInfo> Submodules { get; }
public ModuleInfo Parent { get; }
@@ -31,7 +31,7 @@ namespace Discord.Commands
Parent = parent;

Aliases = BuildAliases(builder).ToImmutableArray();
Commands = builder.Commands.Select(x => x.Build(this, service));
Commands = builder.Commands.Select(x => x.Build(this, service)).ToImmutableArray();
Preconditions = BuildPreconditions(builder).ToImmutableArray();

Submodules = BuildSubmodules(builder, service).ToImmutableArray();


Loading…
Cancel
Save