generator/AWSPSGeneratorLib/Writers/Help/CmdletPageWriter.cs (157 lines of code) (raw):
using System.Collections.Generic;
using System.IO;
using System.Text;
using AWSPowerShellGenerator.Generators;
namespace AWSPowerShellGenerator.Writers.Help
{
internal class CmdletPageWriter : BasePageWriter
{
private readonly string _serviceName;
private readonly string _moduleName;
private readonly string _cmdletName;
private readonly Dictionary<string, string> _pageElements = new Dictionary<string,string>();
public const string SynopsisElementKey = "Synopsis";
public const string DescriptionElementKey = "Description";
public const string SyntaxElementKey = "Syntax";
public const string OutputsElementKey = "Outputs";
public const string ParametersElementKey = "Parameters";
public const string CommonParametersElementKey = "CommonParameters";
public const string NotesElementKey = "Notes";
public const string ExamplesElementKey = "Examples";
public const string RelatedLinksElementKey = "RelatedLinks";
public CmdletPageWriter(GeneratorOptions options, string outputFolder, string serviceName, string moduleName, string cmdletName)
: base(options, outputFolder)
{
this._serviceName = serviceName;
this._moduleName = moduleName;
this._cmdletName = cmdletName;
}
public void AddPageElement(string elementKey, string elementContent)
{
if (_pageElements.ContainsKey(elementKey))
_pageElements[elementKey] = elementContent;
else
_pageElements.Add(elementKey, elementContent);
}
public override string GetTOCID()
{
return this._cmdletName;
}
public override string GenerateFilename()
{
return string.Format("{0}.html", _cmdletName.Replace(' ', '_'));
}
protected override string GetTitle()
{
var serviceAbbreviation = _moduleName == "Common" ? _serviceName : _moduleName;
return string.Format("{0}: {1}", serviceAbbreviation, GetName());
}
protected override string GetName()
{
return string.Format("{0} Cmdlet", _cmdletName);
}
protected override string GetService()
{
return $"<div>{_serviceName}</div>" + GetModuleAvailability(_moduleName);
}
protected override string GetMetaDescription()
{
return _pageElements.ContainsKey(SynopsisElementKey) ? _pageElements[SynopsisElementKey] : GetTitle();
}
protected override void WriteContent(TextWriter writer)
{
// output in the same order as Get-Help -Full
AddSynopsis(writer);
AddSyntax(writer);
AddDescription(writer);
AddParameterList(writer);
AddCommonParameters(writer);
AddOutputs(writer);
AddNotes(writer);
AddExamples(writer);
AddRelatedLinks(writer);
AddSupportedVersion(writer);
}
void AddSynopsis(TextWriter writer)
{
if (!_pageElements.ContainsKey(SynopsisElementKey))
return;
AddSectionHeader(writer, "Synopsis");
writer.WriteLine("<div class=\"synopsis\">{0}</div>", _pageElements[SynopsisElementKey]);
AddSectionClosing(writer);
}
void AddDescription(TextWriter writer)
{
if (!_pageElements.ContainsKey(DescriptionElementKey))
return;
AddSectionHeader(writer, "Description");
writer.WriteLine("<div class=\"description\">{0}</div>", _pageElements[DescriptionElementKey]);
AddSectionClosing(writer);
}
void AddSyntax(TextWriter writer)
{
if (!_pageElements.ContainsKey(SyntaxElementKey))
return;
AddSectionHeader(writer, "Syntax");
writer.WriteLine("<div class=\"syntax\"><pre>{0}</pre></div>", _pageElements[SyntaxElementKey]);
AddSectionClosing(writer);
}
void AddParameterList(TextWriter writer)
{
if (!_pageElements.ContainsKey(ParametersElementKey))
return;
AddSectionHeader(writer, "Parameters");
writer.WriteLine("<div class=\"parameters\">{0}</div>", _pageElements[ParametersElementKey]);
AddSectionClosing(writer);
}
void AddCommonParameters(TextWriter writer)
{
if (!_pageElements.ContainsKey(CommonParametersElementKey))
return;
AddSectionHeader(writer, "Common Credential and Region Parameters");
writer.WriteLine("<div class=\"parameters\">{0}</div>", _pageElements[CommonParametersElementKey]);
AddSectionClosing(writer);
}
void AddOutputs(TextWriter writer)
{
if (!_pageElements.ContainsKey(OutputsElementKey))
return;
AddSectionHeader(writer, "Outputs");
writer.WriteLine("<div class=\"outputs\">{0}</div>", _pageElements[OutputsElementKey]);
AddSectionClosing(writer);
}
void AddNotes(TextWriter writer)
{
if (!_pageElements.ContainsKey(NotesElementKey))
return;
AddSectionHeader(writer, "Notes");
writer.WriteLine("<div class=\"notes\">{0}</div>", _pageElements[NotesElementKey]);
AddSectionClosing(writer);
}
void AddExamples(TextWriter writer)
{
if (!_pageElements.ContainsKey(ExamplesElementKey))
return;
AddSectionHeader(writer, "Examples");
writer.WriteLine("<div class=\"examples\">{0}</div>", _pageElements[ExamplesElementKey]);
AddSectionClosing(writer);
}
void AddRelatedLinks(TextWriter writer)
{
if (!_pageElements.ContainsKey(RelatedLinksElementKey))
return;
AddSectionHeader(writer, "Related Links");
writer.WriteLine("<div class=\"related\">{0}</div>", _pageElements[RelatedLinksElementKey]);
AddSectionClosing(writer);
}
void AddSupportedVersion(TextWriter writer)
{
AddSectionHeader(writer, "Supported Version");
var sb = new StringBuilder();
sb.Append("<div class=\"versioninfo\">");
sb.Append("<p><strong>AWS Tools for PowerShell: </strong><span id=\"assemblyVersion\">2.x.y.z</span></p>");
sb.Append("</div");
writer.WriteLine(sb);
AddSectionClosing(writer);
}
}
}