Use lambda-style subbuilders
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,29 +12,15 @@ namespace Discord.Commands.Builders
|
|||||||
private List<string> aliases;
|
private List<string> aliases;
|
||||||
|
|
||||||
public ModuleBuilder()
|
public ModuleBuilder()
|
||||||
: this(null, null)
|
: this(null)
|
||||||
{ }
|
|
||||||
|
|
||||||
public ModuleBuilder(string prefix)
|
|
||||||
: this(null, prefix)
|
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
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 ModuleBuilder AddCommand(Action<CommandBuilder> createFunc)
|
||||||
public CommandBuilder AddCommand(string name)
|
|
||||||
{
|
{
|
||||||
var builder = new CommandBuilder(this, name);
|
var builder = new CommandBuilder(this);
|
||||||
|
createFunc(builder);
|
||||||
commands.Add(builder);
|
commands.Add(builder);
|
||||||
|
return this;
|
||||||
return builder;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModuleBuilder AddSubmodule() => AddSubmodule(null);
|
public ModuleBuilder AddSubmodule(Action<ModuleBuilder> createFunc)
|
||||||
public ModuleBuilder AddSubmodule(string prefix)
|
|
||||||
{
|
{
|
||||||
var builder = new ModuleBuilder(this, prefix);
|
var builder = new ModuleBuilder(this);
|
||||||
|
createFunc(builder);
|
||||||
submodules.Add(builder);
|
submodules.Add(builder);
|
||||||
|
return this;
|
||||||
return builder;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModuleInfo Build(CommandService service)
|
public ModuleInfo Build(CommandService service)
|
||||||
|
|||||||
Reference in New Issue
Block a user