internal static async Task Build(StreamWriter writer, Type type, XDocument xmlComments) { await DocumentHelpers.PageTitle( writer, async w => await TypeHelper.FullName(w, type, t => t.Name, "<", ">"), TypeHelper.TypeTypeTitle(type)); await DocumentHelpers.PageHeader(writer, type, xmlComments); await writer.WriteLineAsync(XmlCommentHelper.Summary(XmlCommentHelper.TypeElement(xmlComments, type))); await writer.WriteLineAsync(); await TypeDocument.Signature(writer, type); await TypeDocument.TypeParameters(writer, type, xmlComments); await TypeDocument.Inheritance(writer, type); await TypeDocument.Implements(writer, type); // TODO - Derived // TODO - Attributes await TypeDocument.Constructors(writer, type, xmlComments); await TypeDocument.Properties(writer, type, xmlComments); await TypeDocument.Methods(writer, type, xmlComments); // TODO - Operators // TODO - Explicit Interface Implementations // TODO - Extension Methods }
private static async Task Overloads(StreamWriter writer, IEnumerable <MethodBase> methods, XDocument xmlComments) { await writer.WriteLineAsync("## Overloads"); await writer.WriteLineAsync("| | |"); await writer.WriteLineAsync("|_|_|"); foreach (var method in methods) { await writer.WriteAsync("["); await writer.WriteAsync(method.Name); if (method.IsGenericMethodDefinition) { var genericArguments = method.GetGenericArguments(); await writer.WriteAsync("<"); await TypeHelper.FullName(writer, genericArguments[0], t => t.Name, "<", ">"); for (var i = 1; i < genericArguments.Length; ++i) { await writer.WriteAsync(","); await TypeHelper.FullName(writer, genericArguments[i], t => t.Name, "<", ">"); } await writer.WriteAsync(">"); } await writer.WriteAsync("("); var parameters = method.GetParameters(); if (parameters.Length > 0) { await TypeHelper.FullName(writer, parameters[0].ParameterType, t => t.Name, "<", ">"); for (var i = 1; i < parameters.Length; i++) { await writer.WriteAsync(", "); await TypeHelper.FullName(writer, parameters[i].ParameterType, t => t.Name, "<", ">"); } } await writer.WriteAsync(")]("); /*await writer.WriteAsync(FileNameHelper.MethodFileName(string.Empty, method));*/ await writer.WriteAsync(")|"); var summary = XmlCommentHelper.Summary(XmlCommentHelper.MethodElement(xmlComments, method)); await writer.WriteLineAsync(summary); } await writer.WriteLineAsync(); }
private static async Task MethodDetails( StreamWriter writer, Assembly assembly, Type type, MethodInfo method, XDocument xmlComments) { await writer.WriteLineAsync(XmlCommentHelper.Summary(XmlCommentHelper.MethodElement(xmlComments, method))); await writer.WriteLineAsync(); await MethodDocument.Signature(writer, type, method); await MethodDocument.TypeParameters(writer, method, xmlComments); await MethodDocument.Parameters(writer, method, xmlComments); await MethodDocument.Returns(writer, method, xmlComments); /* await MethodDocument.Implements(); */ await MethodDocument.Exceptions(writer, assembly, method, xmlComments); /* await MethodDocument.Examples() */ /* await MethodDocument.Remarks() */ }
private static async Task Constructors(StreamWriter writer, Type type, XDocument xmlComments) { var constructors = type.GetConstructors(); if (constructors.Length > 0) { await writer.WriteLineAsync("### Constructors"); await writer.WriteLineAsync("| | |"); await writer.WriteLineAsync("|_|_|"); foreach (var constructor in constructors) { await writer.WriteAsync("["); await TypeHelper.FullName(writer, type, t => t.Name, "<", ">"); await writer.WriteAsync("("); var parameters = constructor.GetParameters(); if (parameters.Length > 0) { await TypeHelper.FullName(writer, parameters[0].ParameterType, t => t.Name, "<", ">"); for (var i = 1; i < parameters.Length; i++) { await writer.WriteAsync(", "); await TypeHelper.FullName(writer, parameters[i].ParameterType, t => t.Name, "<", ">"); } } await writer.WriteAsync(")]("); await writer.WriteAsync(FileNameHelper.ConstructorFileName(string.Empty, type)); await writer.WriteAsync(")|"); await writer.WriteLineAsync( XmlCommentHelper.Summary(XmlCommentHelper.MethodElement(xmlComments, constructor))); } } }
internal static async Task Build( StreamWriter writer, string typeNamespace, List <Type> types, XDocument xmlComments) { await writer.WriteAsync("# "); await writer.WriteAsync(typeNamespace); await writer.WriteLineAsync(" Namespace"); await writer.WriteLineAsync(); await writer.WriteLineAsync("| | |"); await writer.WriteLineAsync("|_|_|"); foreach (var type in types) { await writer.WriteAsync("|["); await TypeHelper.FullName(writer, type, t => t.Name, "<", ">"); await writer.WriteAsync("]("); await writer.WriteAsync(FileNameHelper.TypeFileName(string.Empty, type)); await writer.WriteAsync(")|"); await writer.WriteAsync(XmlCommentHelper.Summary(XmlCommentHelper.TypeElement(xmlComments, type))); await writer.WriteLineAsync("|"); } await writer.WriteLineAsync(); }
private static async Task Methods(StreamWriter writer, Type type, XDocument xmlComments) { var methods = type.GetMethods().Where(o => !o.IsSpecialName).Where(TypeHelper.IgnoreDeclaringType).ToList(); if (methods.Count > 0) { await writer.WriteLineAsync("### Methods"); await writer.WriteLineAsync("| | |"); await writer.WriteLineAsync("|_|_|"); foreach (var method in methods) { await writer.WriteAsync("["); await writer.WriteAsync(method.Name); if (method.IsGenericMethodDefinition) { var genericArguments = method.GetGenericArguments(); await writer.WriteAsync("<"); await TypeHelper.FullName(writer, genericArguments[0], t => t.Name, "<", ">"); for (var i = 1; i < genericArguments.Length; ++i) { await writer.WriteAsync(","); await TypeHelper.FullName(writer, genericArguments[i], t => t.Name, "<", ">"); } await writer.WriteAsync(">"); } await writer.WriteAsync("("); var parameters = method.GetParameters(); if (parameters.Length > 0) { await TypeHelper.FullName(writer, parameters[0].ParameterType, t => t.Name, "<", ">"); for (var i = 1; i < parameters.Length; i++) { await writer.WriteAsync(", "); await TypeHelper.FullName(writer, parameters[i].ParameterType, t => t.Name, "<", ">"); } } await writer.WriteAsync(")]("); await writer.WriteAsync(FileNameHelper.MethodFileName(string.Empty, method)); await writer.WriteAsync(")|"); var summary = XmlCommentHelper.Summary(XmlCommentHelper.MethodElement(xmlComments, method)); await writer.WriteAsync(summary); if (method.DeclaringType != type) { if (summary.Length > 0) { await writer.WriteAsync("<br/>"); } await writer.WriteAsync("(Inherited from "); await writer.WriteAsync(method.DeclaringType?.Name); await writer.WriteAsync(")"); } await writer.WriteLineAsync(); } } }