From 0771fcce63ee2ecfba0b69a0d99b1567379f8c4a Mon Sep 17 00:00:00 2001 From: james7132 Date: Sun, 27 Nov 2016 01:28:11 -0800 Subject: [PATCH 1/5] Add Parent property to ModuleInfo --- src/Discord.Net.Commands/Builders/ModuleBuilder.cs | 11 +++++++---- src/Discord.Net.Commands/Info/ModuleInfo.cs | 12 ++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs index 083de8e81..1a4f46663 100644 --- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs @@ -14,8 +14,7 @@ namespace Discord.Commands.Builders public CommandService Service { get; } public ModuleBuilder Parent { get; } public string Name { get; set; } - public string Summary { get; set; } - public string Remarks { get; set; } + public string Summary { get; set; } public string Remarks { get; set; } public IReadOnlyList Commands => _commands; public IReadOnlyList Modules => _submodules; @@ -97,13 +96,17 @@ namespace Discord.Commands.Builders return this; } - public ModuleInfo Build(CommandService service) + private ModuleInfo BuildImpl(CommandService service, ModuleInfo parent = null) { //Default name to first alias if (Name == null) Name = _aliases[0]; - return new ModuleInfo(this, service); + return new ModuleInfo(this, service, parent); } + + public ModuleInfo Build(CommandService service) => BuildImpl(service); + + internal ModuleInfo Build(CommandService service, ModuleInfo parent) => BuildImpl(service, parent); } } diff --git a/src/Discord.Net.Commands/Info/ModuleInfo.cs b/src/Discord.Net.Commands/Info/ModuleInfo.cs index 3baa2d34f..ad228baf1 100644 --- a/src/Discord.Net.Commands/Info/ModuleInfo.cs +++ b/src/Discord.Net.Commands/Info/ModuleInfo.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using System.Collections.Generic; using System.Collections.Immutable; @@ -17,14 +18,17 @@ namespace Discord.Commands public IEnumerable Commands { get; } public IReadOnlyList Preconditions { get; } public IReadOnlyList Submodules { get; } + public ModuleInfo Parent { get; } + public bool IsSubmodule => Parent == null; - internal ModuleInfo(ModuleBuilder builder, CommandService service) + internal ModuleInfo(ModuleBuilder builder, CommandService service, ModuleInfo parent = null) { Service = service; Name = builder.Name; Summary = builder.Summary; Remarks = builder.Remarks; + Parent = parent; Aliases = BuildAliases(builder).ToImmutableArray(); Commands = builder.Commands.Select(x => x.Build(this, service)); @@ -67,13 +71,13 @@ namespace Discord.Commands return result; } - private static List BuildSubmodules(ModuleBuilder parent, CommandService service) + private List BuildSubmodules(ModuleBuilder parent, CommandService service) { var result = new List(); foreach (var submodule in parent.Modules) { - result.Add(submodule.Build(service)); + result.Add(submodule.Build(service, this)); } return result; @@ -93,4 +97,4 @@ namespace Discord.Commands return result; } } -} \ No newline at end of file +} From 686531807132413c3809e22b0fc1dddca2c1b9d1 Mon Sep 17 00:00:00 2001 From: james7132 Date: Sun, 27 Nov 2016 01:32:15 -0800 Subject: [PATCH 2/5] Fix IsSubmodule property's correctness --- src/Discord.Net.Commands/Info/ModuleInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Info/ModuleInfo.cs b/src/Discord.Net.Commands/Info/ModuleInfo.cs index ad228baf1..ab4f65713 100644 --- a/src/Discord.Net.Commands/Info/ModuleInfo.cs +++ b/src/Discord.Net.Commands/Info/ModuleInfo.cs @@ -19,7 +19,7 @@ namespace Discord.Commands public IReadOnlyList Preconditions { get; } public IReadOnlyList Submodules { get; } public ModuleInfo Parent { get; } - public bool IsSubmodule => Parent == null; + public bool IsSubmodule => Parent != null; internal ModuleInfo(ModuleBuilder builder, CommandService service, ModuleInfo parent = null) { From 4896524d1a033299a453b782e11e0bcbe18f183c Mon Sep 17 00:00:00 2001 From: james7132 Date: Sun, 27 Nov 2016 01:36:16 -0800 Subject: [PATCH 3/5] Limit CommandService.Modules to top level modules --- src/Discord.Net.Commands/CommandService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index b6659fea3..3bac40634 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -22,7 +22,7 @@ namespace Discord.Commands internal readonly bool _caseSensitive; internal readonly RunMode _defaultRunMode; - public IEnumerable Modules => _moduleDefs.Select(x => x); + public IEnumerable Modules => _moduleDefs.Where(x => !x.IsSubmodule); public IEnumerable Commands => _moduleDefs.SelectMany(x => x.Commands); public CommandService() : this(new CommandServiceConfig()) { } From 790ca10d1744ec38c2dc30d7f2cb4e6851e1d15c Mon Sep 17 00:00:00 2001 From: james7132 Date: Sun, 27 Nov 2016 01:41:48 -0800 Subject: [PATCH 4/5] Fix accidental line join --- src/Discord.Net.Commands/Builders/ModuleBuilder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs index 1a4f46663..4a4b83497 100644 --- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs @@ -14,7 +14,8 @@ namespace Discord.Commands.Builders public CommandService Service { get; } public ModuleBuilder Parent { get; } public string Name { get; set; } - public string Summary { get; set; } public string Remarks { get; set; } + public string Summary { get; set; } + public string Remarks { get; set; } public IReadOnlyList Commands => _commands; public IReadOnlyList Modules => _submodules; From 2c768c413a4e342a695dd6e3213e3c99380c3fb4 Mon Sep 17 00:00:00 2001 From: james7132 Date: Wed, 30 Nov 2016 19:52:58 +0000 Subject: [PATCH 5/5] Revert CommandService.Modules change --- src/Discord.Net.Commands/CommandService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 3bac40634..b6659fea3 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -22,7 +22,7 @@ namespace Discord.Commands internal readonly bool _caseSensitive; internal readonly RunMode _defaultRunMode; - public IEnumerable Modules => _moduleDefs.Where(x => !x.IsSubmodule); + public IEnumerable Modules => _moduleDefs.Select(x => x); public IEnumerable Commands => _moduleDefs.SelectMany(x => x.Commands); public CommandService() : this(new CommandServiceConfig()) { }