Code/Dependencies/Pixie/Pixie/Options/OptionDocs.cs
using System.Collections.Generic;
namespace WasmBox.Pixie.Options {
/// <summary>
/// Represents documentation attached to an option.
/// </summary>
public sealed class OptionDocs {
/// <summary>
/// Creates documentation for an option.
/// </summary>
/// <param name="category">
/// The option's category.
/// </param>
/// <param name="description">
/// A description of what the option does.
/// </param>
/// <param name="parameters">
/// A list of parameters for each option form.
/// </param>
public OptionDocs(
string category,
MarkupNode description,
IReadOnlyDictionary<OptionForm, IReadOnlyList<OptionParameter>> parameters) {
this.Category = category;
this.Description = description;
this.Parameters = parameters;
}
/// <summary>
/// Creates documentation for an option.
/// </summary>
/// <param name="category">
/// The option's category.
/// </param>
/// <param name="description">
/// A description of what the option does.
/// </param>
/// <param name="forms">
/// A list of forms for the option.
/// </param>
/// <param name="parameters">
/// A common list of parameters for all option forms.
/// </param>
public OptionDocs(
string category,
MarkupNode description,
IReadOnlyList<OptionForm> forms,
IReadOnlyList<OptionParameter> parameters) {
this.Category = category;
this.Description = description;
var paramDocs = new Dictionary<OptionForm, IReadOnlyList<OptionParameter>>();
for (int i = 0; i < forms.Count; i++) {
paramDocs[forms[i]] = parameters;
}
this.Parameters = paramDocs;
}
/// <summary>
/// Gets the default option category.
/// </summary>
public const string DefaultCategory = "Overall options";
/// <summary>
/// Gets the category of options this option belongs to.
/// </summary>
/// <returns>A category.</returns>
public string Category { get; private set; }
/// <summary>
/// Gets a description of what the option does.
/// </summary>
/// <returns>A description.</returns>
public MarkupNode Description { get; private set; }
/// <summary>
/// Gets a dictionary that maps each option form to
/// a list of parameter docs for that form.
/// </summary>
/// <returns>A list of parameters.</returns>
public IReadOnlyDictionary<OptionForm, IReadOnlyList<OptionParameter>> Parameters { get; private set; }
/// <summary>
/// Gets the parameter documentation for a particular
/// option form.
/// </summary>
/// <param name="form">
/// The form to get documentation for.
/// </param>
/// <returns>
/// A list of parameter docs, one for each parameter.
/// </returns>
public IReadOnlyList<OptionParameter> GetParameters(OptionForm form) {
IReadOnlyList<OptionParameter> parameterDocs;
if (Parameters.TryGetValue(form, out parameterDocs)) {
return parameterDocs;
}
else {
return new OptionalOptionParameter[0];
}
}
}
}