/// <summary> /// Constructor /// </summary> /// <param name="tag">TypeCobol type</param> /// <param name="usage">Usage format</param> internal TypeCobolType(Tags tag, UsageFormat usage = UsageFormat.None) { this.Tag = tag; this.Usage = usage; }
/// <summary> /// Helper to format usage messages for a program. /// </summary> /// <param name="mode"> /// Controls what is to be formatted. /// </param> /// <param name="pars"> /// Usually an array of strings, see remarks. /// </param> /// <returns> /// The formatted result. /// </returns> /// <remarks> /// The parameter array must be an array of strings when using /// <see cref="UsageFormat.Options"/>. For all other formats /// the <see cref="object.ToString"/> gets called. /// </remarks> /// <b>Example:</b> /// <code> /// private static string[] options = { /// "server", "host", "Connect to a server at {host}", /// "protocol", "name", "Use the protocol {name} (default: imap)", /// "account", "user", "Login using the {user} account", /// "password", "text", "Use the login password {text}", /// "timeout", "seconds", "Connection/Read/Write timeout (default: 30)", /// "ascii", "", "Do not use line drawing chars or colors", /// "debug", "", "Output debug information", /// "help", "", "Print this text and quit", /// }; /// /// public static void Usage() /// { Console.WriteLine(ArgsTool.Usage(ArgsTool.UsageFormat.Usage, /// ArgsTool.Param(options, "server", false), /// ArgsTool.Param(options, "protocol", true), /// ArgsTool.Param(options, "account", true))); /// Console.WriteLine(ArgsTool.Usage(ArgsTool.UsageFormat.Cont, /// ArgsTool.Param(options, "password", true), /// ArgsTool.Param(options, "timeout", true), /// ArgsTool.Param(options, "ascii", true), /// ArgsTool.Param(options, "debug", true))); /// Console.WriteLine(ArgsTool.Usage(ArgsTool.UsageFormat.More, "-help")); /// Console.WriteLine("\n{0}\n", /// ArgsTool.Usage(ArgsTool.UsageFormat.Options, options)); /// } /// </code> public static string Usage(UsageFormat mode, params object[] pars) { StringBuilder sb = new StringBuilder(); if(mode == UsageFormat.Usage) sb.Append("Usage: " + ArgsTool.AppName); else if(mode == UsageFormat.More) sb.Append(" " + ArgsTool.AppName); else if(mode == UsageFormat.Cont) sb.Append(' ', ArgsTool.AppName.Length + 9); else return List((string[])pars, "Options: "); sb.Append(' '); foreach(object o in pars) sb.Append(o); return sb.ToString(); }