public MarkdownType BuildType(MarkdownType type, MarkdownNamespace namespaceItem, IEnumerable <XmlDocumentComment> comments) { Constants.Logger?.LogTrace("Building Markdown Item for Type {typeName}", type.Name); MarkdownRepo.TryAdd(type); type.NamespaceItem = namespaceItem; type.Summary = comments.FirstOrDefault(x => x.MemberName == type.Name || x.MemberName.StartsWith(type.Name))?.Summary ?? ""; Constants.Logger?.LogTrace("Getting Markdown Fields for Type {typeName}", type.Name); BuildFields(type, comments, type.GetFields().Together(type.GetStaticFields()).ToArray()); Constants.Logger?.LogTrace("Getting Markdown Properties for Type {typeName}", type.Name); BuildProperties(type, comments, type.GetProperties().Together(type.GetStaticProperties()).ToArray()); Constants.Logger?.LogTrace("Getting Markdown Methods for Type {typeName}", type.Name); BuildMethods(type, comments, type.GetMethods().Together(type.GetStaticMethods()).ToArray()); Constants.Logger?.LogTrace("Getting Markdown Events for Type {typeName}", type.Name); BuildEvents(type, comments, type.GetEvents().Together(type.GetStaticEvents()).ToArray()); Constants.Logger?.LogTrace("Getting Markdown Constructors for Type {typeName}", type.Name); BuildConstructors(type, comments, type.GetConstructors().Together(type.GetStaticConstructors()).ToArray()); Constants.Logger?.LogTrace("Completed Building Markdown Type {typeName}", type.Name); return(type); }
/// <summary> /// Builds the page of a MarkdownType and return the rendered markdown /// </summary> /// <param name="item">The markdown item to be rendered</param> /// <returns>The markdown text</returns> public string BuildPage(MarkdownType item) { DefaultTheme.ThemeLogger?.LogDebug("Building Type Page"); var mb = new MarkdownBuilder(); mb.HeaderWithCode(1, Cleaner.CreateFullTypeWithLinks(item, item.InternalType, false, false)); mb.AppendLine(); item.BuildNamespaceLinks(item.Namespace, mb); if (_options.ShowAssembly) { mb.Append("Assembly: ").AppendLine(item.InternalType.Module.Name).AppendLine(); } bool firstInterface = true; foreach (var interfaceItem in item.InternalType.GetInterfaces()) { if (firstInterface) { firstInterface = false; mb.Append("Implements "); } else { mb.Append(", "); } var link = Cleaner.CreateFullTypeWithLinks(item, interfaceItem, false, false); if (string.IsNullOrEmpty(link)) { mb.Link(Cleaner.CleanName(interfaceItem.Name, false, false), ""); } else { mb.Append(link); } } if (!firstInterface) { mb.AppendLine().AppendLine(); } if (!string.IsNullOrEmpty(item.Summary)) { mb.Header(2, "Summary"); mb.AppendLine(item.Summary); } mb.AppendLine(); var typeZeroHeaders = new[] { "Name", "Summary" }; var typeOneHeaders = new[] { "Type", "Name", "Summary" }; var typeTwoHeaders = new[] { "Return", "Name", "Summary" }; BuildTable(mb, "Static Constructors", item.GetConstructors(true), typeZeroHeaders, item); BuildTable(mb, "Constructors", item.GetConstructors(false), typeZeroHeaders, item); BuildTable(mb, "Fields", item.GetFields(false), typeZeroHeaders, item); BuildTable(mb, "Properties", item.GetProperties(false), typeZeroHeaders, item); BuildTable(mb, "Methods", item.GetMethods(false), typeZeroHeaders, item); BuildTable(mb, "Events", item.GetEvents(false), typeZeroHeaders, item); BuildTable(mb, "Static Fields", item.GetFields(true), typeZeroHeaders, item); BuildTable(mb, "Static Properties", item.GetProperties(true), typeZeroHeaders, item); BuildTable(mb, "Static Methods", item.GetMethods(true), typeZeroHeaders, item); BuildTable(mb, "Static Events", item.GetEvents(true), typeZeroHeaders, item); return(mb.ToString()); }