Browse Source

Use lambda-style subbuilders

tags/1.0-rc
FiniteReality 8 years ago
parent
commit
d25fbf78c0
2 changed files with 18 additions and 38 deletions
  1. +7
    -11
      src/Discord.Net.Commands/Builders/CommandBuilder.cs
  2. +11
    -27
      src/Discord.Net.Commands/Builders/ModuleBuilder.cs

+ 7
- 11
src/Discord.Net.Commands/Builders/CommandBuilder.cs View File

@@ -10,18 +10,12 @@ namespace Discord.Commands.Builders
private List<ParameterBuilder> parameters;
private List<string> aliases;

internal CommandBuilder(ModuleBuilder module, string prefix)
internal CommandBuilder(ModuleBuilder module)
{
preconditions = new List<PreconditionAttribute>();
parameters = new List<ParameterBuilder>();
aliases = new List<string>();

if (prefix != null)
{
aliases.Add(prefix);
Name = prefix;
}

Module = module;
}

@@ -65,15 +59,17 @@ namespace Discord.Commands.Builders
return this;
}

public CommandBuilder AddParameter(ParameterBuilder parameter)
public CommandBuilder AddParameter(Action<ParameterBuilder> createFunc)
{
parameters.Add(parameter);
var param = new ParameterBuilder();
createFunc(param);
parameters.Add(param);
return this;
}

public CommandBuilder AddAlias(string alias)
public CommandBuilder AddAliases(params string[] newAliases)
{
aliases.Add(alias);
aliases.AddRange(newAliases);
return this;
}



+ 11
- 27
src/Discord.Net.Commands/Builders/ModuleBuilder.cs View File

@@ -12,29 +12,15 @@ namespace Discord.Commands.Builders
private List<string> aliases;

public ModuleBuilder()
: this(null, null)
{ }

public ModuleBuilder(string prefix)
: this(null, prefix)
: this(null)
{ }

internal ModuleBuilder(ModuleBuilder parent)
: this(parent, null)
{ }

internal ModuleBuilder(ModuleBuilder parent, string prefix)
{
commands = new List<CommandBuilder>();
submodules = new List<ModuleBuilder>();
preconditions = new List<PreconditionAttribute>();
aliases = new List<string>();

if (prefix != null)
{
aliases.Add(prefix);
Name = prefix;
}
ParentModule = parent;
}
@@ -67,9 +53,9 @@ namespace Discord.Commands.Builders
return this;
}

public ModuleBuilder AddAlias(string alias)
public ModuleBuilder AddAliases(params string[] newAliases)
{
aliases.Add(alias);
aliases.AddRange(newAliases);
return this;
}

@@ -79,22 +65,20 @@ namespace Discord.Commands.Builders
return this;
}

public CommandBuilder AddCommand() => AddCommand(null);
public CommandBuilder AddCommand(string name)
public ModuleBuilder AddCommand(Action<CommandBuilder> createFunc)
{
var builder = new CommandBuilder(this, name);
var builder = new CommandBuilder(this);
createFunc(builder);
commands.Add(builder);

return builder;
return this;
}

public ModuleBuilder AddSubmodule() => AddSubmodule(null);
public ModuleBuilder AddSubmodule(string prefix)
public ModuleBuilder AddSubmodule(Action<ModuleBuilder> createFunc)
{
var builder = new ModuleBuilder(this, prefix);
var builder = new ModuleBuilder(this);
createFunc(builder);
submodules.Add(builder);

return builder;
return this;
}

public ModuleInfo Build(CommandService service)


Loading…
Cancel
Save