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<ParameterBuilder> parameters;
private List<string> aliases; private List<string> aliases;


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


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

Module = module; Module = module;
} }


@@ -65,15 +59,17 @@ namespace Discord.Commands.Builders
return this; 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; return this;
} }


public CommandBuilder AddAlias(string alias)
public CommandBuilder AddAliases(params string[] newAliases)
{ {
aliases.Add(alias);
aliases.AddRange(newAliases);
return this; 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; private List<string> aliases;


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

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


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

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

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


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


@@ -79,22 +65,20 @@ namespace Discord.Commands.Builders
return this; 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); 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); submodules.Add(builder);

return builder;
return this;
} }


public ModuleInfo Build(CommandService service) public ModuleInfo Build(CommandService service)


Loading…
Cancel
Save