private IReadOnlyList <OptionGroup> GroupOptions(IEnumerable <Option> options) { Contract.Ensures(Contract.Result <IList <OptionGroup> >() != null); var groups = new OrderedDictionary <string, OptionGroup>(); var helpMap = new Dictionary <Option, OptionHelp>(); foreach (var opt in options) { if (opt.Kind == OptionKind.Group) { continue; } int flags = opt.Flags; if (Settings.FlagsToInclude != 0 && (flags & Settings.FlagsToInclude) == 0) { continue; } if ((flags & Settings.FlagsToExclude) != 0) { continue; } // Ignore options without help text or which are aliases of an // option without help text. Option mainOpt; if (opt.HelpText != null) { mainOpt = opt; } else if ((mainOpt = opt.Alias) != null && mainOpt.HelpText != null) { // Empty } else { continue; } string title = GetGroupTitle(mainOpt) ?? Settings.DefaultHelpGroup; if (!groups.ContainsKey(title)) { groups.Add(title, new OptionGroup(title)); } string name = opt.GetHelpName(Settings.DefaultMetaVar); if (!helpMap.TryGetValue(mainOpt, out OptionHelp help)) { helpMap[mainOpt] = help = new OptionHelp(name, mainOpt.HelpText); groups[title].Add(help); } else { help.AddVariant(name); } } return(groups.Values); }
public string Help() { OptionHelp help = new OptionHelp(); foreach (Option opt in iOptions) { opt.AppendHelp(help); } return iUsage + "\n" + help; }
public string Help() { OptionHelp help = new OptionHelp(); foreach (Option opt in iOptions) { opt.AppendHelp(help); } return(iUsage + "\n" + help.ToString()); }
public override void AppendHelp(OptionHelp aHelp) { aHelp.Append(iShortName, iLongName, iHelpDesc, iHelpMetaVar); }
public abstract void AppendHelp(OptionHelp aHelp);