void BuildDescription <T>(MarkdownBuilder mb, string label, T[] array, IEnumerable <XmlComment> docs, Func <T, string> type, Func <T, string> name, Func <T, string> finalName) { if (array.Any()) { mb.Header(2, label); mb.AppendLine(); string[] head = (this._type.IsEnum) ? new[] { "Value", "Name", "Description" } : new[] { "Type", "Name", "Description" }; IEnumerable <T> seq = array; if (!this._type.IsEnum) { seq = array.OrderBy(x => name(x)); } var data = seq.Select(item2 => { var summary = docs.FirstOrDefault(x => x.MemberName == name(item2) || x.MemberName.StartsWith(name(item2) + "`"))?.Summary ?? ""; return(new[] { MarkdownHelper.RenderCode(type(item2)), finalName(item2), summary }); }); mb.Table(head, data); mb.AppendLine(); mb.AppendLine(); } }
void BuildFullDescription <T>(MarkdownBuilder mb, string label, T[] array, IEnumerable <XmlComment> docs, Func <T, string> type, Func <T, string> name, Func <T, string> finalName) where T : MethodBase { if (array.Any()) { mb.Header(2, label); mb.AppendLine(); foreach (T item in array) { var doc = docs.FindComment(name(item), item.MemberType, item.GetParameters()?.Select(x => x.Name).ToArray()); var itemSummary = doc?.Summary; mb.List(MarkdownHelper.RenderCode(finalName(item).Replace("`", ""))); mb.AppendLine(); if (!item.IsConstructor) { mb.AppendLine(" **Return type:** " + MarkdownHelper.RenderCode(type(item))); mb.AppendLine(); } if (!String.IsNullOrWhiteSpace(itemSummary)) { mb.AppendLine(" " + itemSummary); mb.AppendLine(); } var parameters = item.GetParameters(); if (parameters.Any()) { string[] head = (this._type.IsEnum) ? new[] { "Value", "Name", "Description" } : new[] { "Type", "Name", "Description" }; var data = parameters.Select(param => { var paramSummary = doc?.Parameters[param.Name] ?? ""; return(new[] { MarkdownHelper.RenderCode(MarkdownHelper.RenderType(param.ParameterType)), param.Name, paramSummary }); }); mb.Table(head, data, true); mb.AppendLine(); mb.AppendLine(); } } mb.AppendLine(); } }