Name: Mono.Options
Description: Command Line Parsing Library
-Version: 0.2.2
+Version: 0.2.3
//
// DO NOT MODIFY STRINGS BELOW WITHOUT UPDATING mono/data/mono-options.pc.in
//
- "0.2.2.0"
+ "0.2.3.0"
//
// DO NOT MODIFY STRINGS ABOVE WITHOUT UPDATING mono/data/mono-options.pc.in
//
<AssemblyInfo>
<AssemblyName>Mono.Options</AssemblyName>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<Docs>
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.Generic.IEnumerable<System.String></ReturnType>
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.Generic.IEnumerable<System.String></ReturnType>
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String[]</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ThreadingSafetyStatement>
All members of this type are safe for multithreaded operations.
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="prototype" Type="System.String" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="prototype" Type="System.String" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String[]</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String[]</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionValueType</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<TypeParameters>
<TypeParameter Name="TKey" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="set" Type="Mono.Options.OptionSet" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.Option</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionValueCollection</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Exception</BaseTypeName>
<AssemblyInfo>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<Docs>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="info" Type="System.Runtime.Serialization.SerializationInfo" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="message" Type="System.String" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="message" Type="System.String" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ThreadingSafetyStatement>
All public static members of this type are safe for multithreaded
Response files, as used by <c>mcs</c> and other compiler tools, may be
supported by using <see cref="T:Mono.Options.ResponseFileSource" />.
</para>
+ <para>
+ "Headers" -- string constants which allow grouping of options in the
+ output of
+ <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />
+ -- may be provided "inline" with the actual options. The <c>greet</c>
+ example below shows such usage.
+ </para>
<para>
Three conditions must be met for a sequence of arguments to be
considered as a match for an <see cref="T:Mono.Options.Option" />:
</remarks>
<example>
<para>
- The following example demonstrates some simple usage of
+ The following <c>greet</c> example demonstrates some simple usage of
<see cref="T:Mono.Options.OptionSet" />.
</para>
<code lang="C#" src="examples/greet.cs">using System;
int repeat = 1;
var p = new OptionSet () {
+ "Usage: greet [OPTIONS]+ message",
+ "Greet a list of individuals with an optional message.",
+ "If no message is specified, a generic greeting is used.",
+ "",
+ "Options:",
{ "n|name=", "the {NAME} of someone to greet.",
v => names.Add (v) },
{ "r|repeat=",
}
if (show_help) {
- ShowHelp (p);
+ p.WriteOptionDescriptions (Console.Out);
return;
}
}
}
- static void ShowHelp (OptionSet p)
- {
- Console.WriteLine ("Usage: greet [OPTIONS]+ message");
- Console.WriteLine ("Greet a list of individuals with an optional message.");
- Console.WriteLine ("If no message is specified, a generic greeting is used.");
- Console.WriteLine ();
- Console.WriteLine ("Options:");
- p.WriteOptionDescriptions (Console.Out);
- }
-
static void Debug (string format, params object[] args)
{
if (verbosity > 0) {
string color = null;
var p = new OptionSet () {
- // gcc-like options
+ "Usage: bundling [OPTIONS]+",
+ "Demo program to show the effects of bundling options and their values",
+ "",
+ "gcc-like options:",
{ "D:", "Predefine a macro with an (optional) value.",
(m, v) => {
if (m == null)
(m, v) => macros.Add (m, v) },
{ "o=", "Specify the output file", v => output = v },
- // tar-like options
+ "",
+ "tar-like options:",
{ "f=", "The input file", v => input = v },
{ "x", "Extract the file", v => extract = v != null },
{ "c", "Create the file", v => create = v != null },
{ "t", "List the file", v => list = v != null },
- // ls-like optional values
+ "",
+ "ls-like optional values:",
{ "color:", "control whether and when color is used",
v => color = v },
- // other...
+ "",
+ "other:",
{ "h|help", "show this message and exit",
v => show_help = v != null },
// default
}
if (show_help) {
- ShowHelp (p);
+ p.WriteOptionDescriptions (Console.Out);
return;
}
Console.WriteLine ("\t List: {0}", list);
Console.WriteLine ("\t Color: {0}", color ?? "<null>");
}
-
- static void ShowHelp (OptionSet p)
- {
- Console.WriteLine ("Usage: bundling [OPTIONS]+");
- Console.WriteLine ("Demo program to show the effects of bundling options and their values");
- Console.WriteLine ();
- Console.WriteLine ("Options:");
- p.WriteOptionDescriptions (Console.Out);
- }
}
</code>
Usage: bundling [OPTIONS]+
Demo program to show the effects of bundling options and their values
-Options:
+gcc-like options:
-D[=VALUE1:VALUE2] Predefine a macro with an (optional) value.
-d=VALUE1-->VALUE2 Alternate macro syntax.
-o=VALUE Specify the output file
+
+tar-like options:
-f=VALUE The input file
-x Extract the file
-c Create the file
-t List the file
+
+ls-like optional values:
--color[=VALUE] control whether and when color is used
+
+other:
-h, --help show this message and exit
$ mono bundling.exe -D
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<Docs>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="localizer" Type="System.Converter<System.String,System.String>" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
</exception>
</Docs>
</Member>
+ <Member MemberName="Add">
+ <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (string header);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(string header) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.Options.OptionSet</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="header" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="header">
+ A <see cref="T:System.String" /> containing the header to display
+ during <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+ </param>
+ <summary>
+ Declare a header to be printed during
+ <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+ </summary>
+ <returns>
+ The current <see cref="T:Mono.Options.OptionSet" /> instance.
+ This is to permit method chaining.
+ </returns>
+ <remarks>
+ <para>
+ The <c>Add(string)</c> method can be used to provide option groupin
+ in the output generatedy by
+ <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+ </para>
+ </remarks>
+ </Docs>
+ </Member>
<Member MemberName="Add">
<MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (string prototype, Mono.Options.OptionAction<string,string> action);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(string prototype, class Mono.Options.OptionAction`2<string, string> action) cil managed" />
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionSet</ReturnType>
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.ObjectModel.ReadOnlyCollection<Mono.Options.ArgumentSource></ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionContext</ReturnType>
<AssemblyInfo>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Attributes>
<Attribute>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Converter<System.String,System.String></ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.Generic.List<System.String></ReturnType>
int repeat = 1;
var p = new OptionSet () {
+ "Usage: greet [OPTIONS]+ message",
+ "Greet a list of individuals with an optional message.",
+ "If no message is specified, a generic greeting is used.",
+ "",
+ "Options:",
{ "n|name=", "the {NAME} of someone to greet.",
v => names.Add (v) },
{ "r|repeat=",
}
if (show_help) {
- ShowHelp (p);
+ p.WriteOptionDescriptions (Console.Out);
return;
}
}
}
- static void ShowHelp (OptionSet p)
- {
- Console.WriteLine ("Usage: greet [OPTIONS]+ message");
- Console.WriteLine ("Greet a list of individuals with an optional message.");
- Console.WriteLine ("If no message is specified, a generic greeting is used.");
- Console.WriteLine ();
- Console.WriteLine ("Options:");
- p.WriteOptionDescriptions (Console.Out);
- }
-
static void Debug (string format, params object[] args)
{
if (verbosity > 0) {
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
int repeat = 1;
var p = new OptionSet () {
+ "Usage: greet [OPTIONS]+ message",
+ "Greet a list of individuals with an optional message.",
+ "If no message is specified, a generic greeting is used.",
+ "",
+ "Options:",
{ "n|name=", "the {NAME} of someone to greet.",
v => names.Add (v) },
{ "r|repeat=",
}
if (show_help) {
- ShowHelp (p);
+ p.WriteOptionDescriptions (Console.Out);
return;
}
}
}
- static void ShowHelp (OptionSet p)
- {
- Console.WriteLine ("Usage: greet [OPTIONS]+ message");
- Console.WriteLine ("Greet a list of individuals with an optional message.");
- Console.WriteLine ("If no message is specified, a generic greeting is used.");
- Console.WriteLine ();
- Console.WriteLine ("Options:");
- p.WriteOptionDescriptions (Console.Out);
- }
-
static void Debug (string format, params object[] args)
{
if (verbosity > 0) {
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.Generic.IEnumerator<System.String></ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Object</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.IEnumerator</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Int32</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Object</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String[]</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.Generic.List<System.String></ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Enum</BaseTypeName>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionValueType</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionValueType</ReturnType>
<AssemblyVersion>0.2.0.0</AssemblyVersion>
<AssemblyVersion>0.2.1.0</AssemblyVersion>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Options.OptionValueType</ReturnType>
<AssemblyInfo>
<AssemblyName>Mono.Options</AssemblyName>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>Mono.Options.ArgumentSource</BaseTypeName>
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<Docs>
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.2.2.0</AssemblyVersion>
+ <AssemblyVersion>0.2.3.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String[]</ReturnType>
string color = null;
var p = new OptionSet () {
- // gcc-like options
+ "Usage: bundling [OPTIONS]+",
+ "Demo program to show the effects of bundling options and their values",
+ "",
+ "gcc-like options:",
{ "D:", "Predefine a macro with an (optional) value.",
(m, v) => {
if (m == null)
(m, v) => macros.Add (m, v) },
{ "o=", "Specify the output file", v => output = v },
- // tar-like options
+ "",
+ "tar-like options:",
{ "f=", "The input file", v => input = v },
{ "x", "Extract the file", v => extract = v != null },
{ "c", "Create the file", v => create = v != null },
{ "t", "List the file", v => list = v != null },
- // ls-like optional values
+ "",
+ "ls-like optional values:",
{ "color:", "control whether and when color is used",
v => color = v },
- // other...
+ "",
+ "other:",
{ "h|help", "show this message and exit",
v => show_help = v != null },
// default
}
if (show_help) {
- ShowHelp (p);
+ p.WriteOptionDescriptions (Console.Out);
return;
}
Console.WriteLine ("\t List: {0}", list);
Console.WriteLine ("\t Color: {0}", color ?? "<null>");
}
-
- static void ShowHelp (OptionSet p)
- {
- Console.WriteLine ("Usage: bundling [OPTIONS]+");
- Console.WriteLine ("Demo program to show the effects of bundling options and their values");
- Console.WriteLine ();
- Console.WriteLine ("Options:");
- p.WriteOptionDescriptions (Console.Out);
- }
}
Usage: bundling [OPTIONS]+
Demo program to show the effects of bundling options and their values
-Options:
+gcc-like options:
-D[=VALUE1:VALUE2] Predefine a macro with an (optional) value.
-d=VALUE1-->VALUE2 Alternate macro syntax.
-o=VALUE Specify the output file
+
+tar-like options:
-f=VALUE The input file
-x Extract the file
-c Create the file
-t List the file
+
+ls-like optional values:
--color[=VALUE] control whether and when color is used
+
+other:
-h, --help show this message and exit
$ mono bundling.exe -D
int repeat = 1;
var p = new OptionSet () {
+ "Usage: greet [OPTIONS]+ message",
+ "Greet a list of individuals with an optional message.",
+ "If no message is specified, a generic greeting is used.",
+ "",
+ "Options:",
{ "n|name=", "the {NAME} of someone to greet.",
v => names.Add (v) },
{ "r|repeat=",
}
if (show_help) {
- ShowHelp (p);
+ p.WriteOptionDescriptions (Console.Out);
return;
}
}
}
- static void ShowHelp (OptionSet p)
- {
- Console.WriteLine ("Usage: greet [OPTIONS]+ message");
- Console.WriteLine ("Greet a list of individuals with an optional message.");
- Console.WriteLine ("If no message is specified, a generic greeting is used.");
- Console.WriteLine ();
- Console.WriteLine ("Options:");
- p.WriteOptionDescriptions (Console.Out);
- }
-
static void Debug (string format, params object[] args)
{
if (verbosity > 0) {
<Remarks>Program option parser.</Remarks>
<Copyright>2008 Novell, Inc.</Copyright>
<Assemblies>
- <Assembly Name="Mono.Options" Version="0.2.2.0">
+ <Assembly Name="Mono.Options" Version="0.2.3.0">
<AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 d2 d0 3a 8e 6b ea 7a 2e 74 e8 d1 af cc 93 e8 85 19 74 95 2b b4 80 a1 2c 91 34 47 4d 04 06 24 47 c3 7e 0e 68 c0 80 53 6f cf 3c 3f be 2f f9 c9 79 ce 99 84 75 e5 06 e8 ce 82 dd 5b 0f 35 0d c1 0e 93 bf 2e ee cf 87 4b 24 77 0c 50 81 db ea 74 47 fd da fa 27 7b 22 de 47 d6 ff ea 44 96 74 a4 f9 fc cf 84 d1 50 69 08 93 80 28 4d bd d3 5f 46 cd ff 12 a1 bd 78 e4 ef 00 65 d0 16 df ]</AssemblyPublicKey>
<Attributes>
<Attribute>
throw new ArgumentOutOfRangeException ("maxValueCount");
this.prototype = prototype;
- this.names = prototype.Split ('|');
this.description = description;
this.count = maxValueCount;
+ this.names = (this is OptionSet.Category)
+ // append GetHashCode() so that "duplicate" categories have distinct
+ // names, e.g. adding multiple "" categories should be valid.
+ ? new[]{prototype + this.GetHashCode ()}
+ : prototype.Split ('|');
+
+ if (this is OptionSet.Category)
+ return;
+
this.type = ParsePrototype ();
if (this.count == 0 && type != OptionValueType.None)
}
}
+ public OptionSet Add (string header)
+ {
+ if (header == null)
+ throw new ArgumentNullException ("header");
+ Add (new Category (header));
+ return this;
+ }
+
+ internal sealed class Category : Option {
+
+ // Prototype starts with '=' because this is an invalid prototype
+ // (see Option.ParsePrototype(), and thus it'll prevent Category
+ // instances from being accidentally used as normal options.
+ public Category (string description)
+ : base ("=:Category:= " + description, description)
+ {
+ }
+
+ protected override void OnParseComplete (OptionContext c)
+ {
+ throw new NotSupportedException ("Category.OnParseComplete should not be invoked.");
+ }
+ }
+
+
public new OptionSet Add (Option option)
{
base.Add (option);
}
private const int OptionWidth = 29;
+ private const int Description_FirstWidth = 80 - OptionWidth;
+ private const int Description_RemWidth = 80 - OptionWidth - 2;
public void WriteOptionDescriptions (TextWriter o)
{
foreach (Option p in this) {
int written = 0;
+
+ Category c = p as Category;
+ if (c != null) {
+ WriteDescription (o, p.Description, "", 80, 80);
+ continue;
+ }
+
if (!WriteOptionPrototype (o, p, ref written))
continue;
o.Write (new string (' ', OptionWidth));
}
- bool indent = false;
- string prefix = new string (' ', OptionWidth+2);
- foreach (string line in GetLines (localizer (GetDescription (p.Description)))) {
- if (indent)
- o.Write (prefix);
- o.WriteLine (line);
- indent = true;
- }
+ WriteDescription (o, p.Description, new string (' ', OptionWidth+2),
+ Description_FirstWidth, Description_RemWidth);
}
foreach (ArgumentSource s in sources) {
o.Write (new string (' ', OptionWidth));
}
- bool indent = false;
- string prefix = new string (' ', OptionWidth+2);
- foreach (string line in GetLines (localizer (GetDescription (s.Description)))) {
- if (indent)
- o.Write (prefix);
- o.WriteLine (line);
- indent = true;
- }
+ WriteDescription (o, s.Description, new string (' ', OptionWidth+2),
+ Description_FirstWidth, Description_RemWidth);
+ }
+ }
+
+ void WriteDescription (TextWriter o, string value, string prefix, int firstWidth, int remWidth)
+ {
+ bool indent = false;
+ foreach (string line in GetLines (localizer (GetDescription (value)), firstWidth, remWidth)) {
+ if (indent)
+ o.Write (prefix);
+ o.WriteLine (line);
+ indent = true;
}
}
return sb.ToString ();
}
- private static IEnumerable<string> GetLines (string description)
+ private static IEnumerable<string> GetLines (string description, int firstWidth, int remWidth)
{
- return StringCoda.WrappedLines (description,
- 80 - OptionWidth,
- 80 - OptionWidth - 2);
+ return StringCoda.WrappedLines (description, firstWidth, remWidth);
}
}
}
Utils.AssertException (typeof(ArgumentNullException),
"Argument cannot be null.\nParameter name: option",
p, v => { v.Add ((Option) null); });
+ Utils.AssertException (typeof(ArgumentNullException),
+ "Argument cannot be null.\nParameter name: header",
+ p, v => { v.Add ((string) null); });
// bad type
Utils.AssertException (typeof(OptionException),
public void WriteOptionDescriptions ()
{
var p = new OptionSet () {
+ "\n:Category 1:",
{ "p|indicator-style=", "append / indicator to directories", v => {} },
{ "color:", "controls color info", v => {} },
{ "color2:", "set {color}", v => {} },
{ "long-desc5",
"Lots of spaces in the middle - . - . - . - . - . - . - . - and more until the end.",
v => {} },
+ "",
+ "==This is a really long category name which will involve line wrapping, just because...==",
{ "o|out=",
"The {DIRECTORY} to place the generated files and directories.\n\n" +
"If not specified, defaults to\n`dirname FILE`/cache/`basename FILE .tree`.",
v => {} },
+ "",
+ "Category 3:",
{ "h|?|help", "show help text", v => {} },
{ "version", "output version information and exit", v => {} },
{ "<>", v => {} },
};
StringWriter expected = new StringWriter ();
+ expected.WriteLine ("");
+ expected.WriteLine (":Category 1:");
expected.WriteLine (" -p, --indicator-style=VALUE");
expected.WriteLine (" append / indicator to directories");
expected.WriteLine (" --color[=VALUE] controls color info");
expected.WriteLine (" 2 3 4 5 and more until the end.");
expected.WriteLine (" --long-desc5 Lots of spaces in the middle - . - . - . - . - . -");
expected.WriteLine (" . - . - and more until the end.");
+ expected.WriteLine ("");
+ expected.WriteLine ("==This is a really long category name which will involve line wrapping, just");
+ expected.WriteLine ("because...==");
expected.WriteLine (" -o, --out=DIRECTORY The DIRECTORY to place the generated files and");
expected.WriteLine (" directories.");
expected.WriteLine (" ");
expected.WriteLine (" If not specified, defaults to");
expected.WriteLine (" `dirname FILE`/cache/`basename FILE .tree`.");
+ expected.WriteLine ("");
+ expected.WriteLine ("Category 3:");
expected.WriteLine (" -h, -?, --help show help text");
expected.WriteLine (" --version output version information and exit");
expected.WriteLine (" @s1, @s2 Read Response File for More Options");