public static void GenerateDocumentation(this IDocumented gen, IndentWriter writer) { if (gen.Doc is null) { return; } writer.WriteDocumentation(gen.Doc, gen is ReturnValue ? "returns" : "summary"); }
/// <summary> /// Gets the documentation page for a step /// </summary> public static string GetPageText(IDocumented doc) { var sb = new StringBuilder(); sb.AppendLine($"## {doc.Name}"); var aliases = string.Join(@", ", doc.AllNames.Select(x => $"`{x}`")); sb.AppendLine($"_Alias_:{aliases}"); sb.AppendLine(); if (!string.IsNullOrWhiteSpace(doc.TypeDetails)) { sb.AppendLine($"_Output_:`{doc.TypeDetails}`"); sb.AppendLine(); } foreach (var docRequirement in doc.Requirements) { sb.AppendLine($"*{docRequirement}*"); sb.AppendLine(); } if (!string.IsNullOrWhiteSpace(doc.Summary)) { sb.AppendLine(Escape(doc.Summary).Trim()); sb.AppendLine(); } if (doc.Parameters.Any()) { var extraColumns = doc.Parameters.SelectMany(x => x.ExtraFields.Keys) .Distinct() .OrderBy(x => x) .ToList(); var headers = new List <Prettifier.Cell>() { Prettifier.Cell.Create("Parameter", Prettifier.Alignment.LeftJustified), Prettifier.Cell.Create("Type", Prettifier.Alignment.Centre), Prettifier.Cell.Create("Required", Prettifier.Alignment.Centre), }; headers.AddRange( extraColumns.Select(x => Prettifier.Cell.Create(x, Prettifier.Alignment.Centre)) ); headers.Add(Prettifier.Cell.Create("Summary", Prettifier.Alignment.LeftJustified)); var parameterRows = doc.Parameters .Select( rp => { var nameString = string.Join( "<br>", rp.Aliases.Select(x => $"_{x}_").Prepend(rp.Name) ); var r = new List <string?> { nameString, TypeNameHelper.GetMarkupTypeName(rp.Type), rp.Required ? "✔" : "", }; foreach (var extraColumn in extraColumns) { var columnValue = rp.ExtraFields.TryGetValue( extraColumn, out var cv ) ? cv : null; r.Add(columnValue); } r.Add(rp.Summary); return(r); } ) .ToList(); Prettifier.CreateMarkdownTable(headers, parameterRows, sb); } return(sb.ToString().Trim()); }