Esempio n. 1
0
        public static void GenerateDocumentation(this IDocumented gen, IndentWriter writer)
        {
            if (gen.Doc is null)
            {
                return;
            }

            writer.WriteDocumentation(gen.Doc, gen is ReturnValue ? "returns" : "summary");
        }
Esempio n. 2
0
        /// <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());
        }