protected override void Executed(Params args, IConsoleOutput target) { Command[] enabledCommands = AllCommandsInternal.Where(i => i.IsEnabled).ToArray(); if (args.Count == 0) { Executed(new Params(new string[] { 1.ToString() }), target); return; } if (args.IsInteger(0)) { target.WriteLine("Listing commands at page " + args.ToInt(0) + " of " + GetPageCount()); for (int i = (args.ToInt(0) - 1) * 5; i < (args.ToInt(0) - 1) * 5 + 5 && i < enabledCommands.Length; i++) { target.WriteLine("* " + enabledCommands[i].Name + ": " + enabledCommands[i].HelpDescription); } } else { Command cmd = GetByName(args.JoinEnd(0)); target.WriteLine(cmd.Name); target.WriteLine("* " + cmd.HelpDescription); string sstring = cmd.GetSyntax(new Params(new string[0])).CreateSyntaxString(); target.WriteWarning("* Syntax: "); foreach (string i in sstring.Split('\n')) { target.WriteWarning("* " + i); } } }
/// <summary> /// Finds and returns a command by name /// </summary> /// <param name="name">Name of command</param> /// <param name="includeDisabled">Will the search include commands that have been disabled?</param> /// <returns></returns> public static Command GetByName(string name, bool includeDisabled) { if (!includeDisabled) { return(GetByName(name)); } name = name.Trim(); return(AllCommandsInternal.Where(i => i.Name.ToUpper() == name.ToUpper()).LastOrDefault()); }
public override Syntax GetSyntax(Params args) { if (args.Count == 0) { return(Syntax.Begin().Add("Command name", AllCommandsInternal.Select(i => i.Name).ToArray()).Or().Add("Page number", Range.From(1).To(GetPageCount()), true).Or()); } else if (args.Count == 1 && args.IsDouble(0)) { return(Syntax.Begin().Add("Page number", Range.From(1).To(GetPageCount()), true)); } else { return(Syntax.Begin().Add("Command name", AllCommandsInternal.Select(i => i.Name).ToArray())); } }
static int GetPageCount() { return(AllCommandsInternal.Count(i => i.IsEnabled) / 5 + (AllCommandsInternal.Count(i => i.IsEnabled) % 5 == 0 ? 0 : 1)); }
/// <summary> /// Finds and returns a command by its typecode /// </summary> /// <typeparam name="C">Type of command to find</typeparam> /// <returns></returns> public static Command GetByType <C>() where C : Command { return(AllCommandsInternal.Where(i => i.GetType() == typeof(C)).LastOrDefault()); }
/// <summary> /// Finds and returns a command by name /// </summary> /// <param name="name">Name of command</param> /// <returns></returns> public static Command GetByName(string name) { name = name.Trim(); return(AllCommandsInternal.Where(i => i.Name.ToUpper() == name.ToUpper() && i.IsEnabled).LastOrDefault()); }
/// <summary> /// Registers a command in this command collection /// </summary> /// <param name="command">Command to register</param> public static void Register(Command command) { AllCommandsInternal.Add(command); command.IsEnabled = true; }