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
        }
Ejemplo n.º 2
0
        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("&lt;");

                    await TypeHelper.FullName(writer, genericArguments[0], t => t.Name, "&lt;", "&gt;");

                    for (var i = 1; i < genericArguments.Length; ++i)
                    {
                        await writer.WriteAsync(",");

                        await TypeHelper.FullName(writer, genericArguments[i], t => t.Name, "&lt;", "&gt;");
                    }

                    await writer.WriteAsync("&gt;");
                }

                await writer.WriteAsync("(");

                var parameters = method.GetParameters();

                if (parameters.Length > 0)
                {
                    await TypeHelper.FullName(writer, parameters[0].ParameterType, t => t.Name, "&lt;", "&gt;");

                    for (var i = 1; i < parameters.Length; i++)
                    {
                        await writer.WriteAsync(", ");

                        await TypeHelper.FullName(writer, parameters[i].ParameterType, t => t.Name, "&lt;", "&gt;");
                    }
                }

                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();
        }
Ejemplo n.º 3
0
        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, "&lt;", "&gt;");

                    await writer.WriteAsync("(");

                    var parameters = constructor.GetParameters();

                    if (parameters.Length > 0)
                    {
                        await TypeHelper.FullName(writer, parameters[0].ParameterType, t => t.Name, "&lt;", "&gt;");

                        for (var i = 1; i < parameters.Length; i++)
                        {
                            await writer.WriteAsync(", ");

                            await TypeHelper.FullName(writer, parameters[i].ParameterType, t => t.Name, "&lt;", "&gt;");
                        }
                    }

                    await writer.WriteAsync(")](");

                    await writer.WriteAsync(FileNameHelper.ConstructorFileName(string.Empty, type));

                    await writer.WriteAsync(")|");

                    await writer.WriteLineAsync(
                        XmlCommentHelper.Summary(XmlCommentHelper.MethodElement(xmlComments, constructor)));
                }
            }
        }
Ejemplo n.º 5
0
        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, "&lt;", "&gt;");

                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("&lt;");

                        await TypeHelper.FullName(writer, genericArguments[0], t => t.Name, "&lt;", "&gt;");

                        for (var i = 1; i < genericArguments.Length; ++i)
                        {
                            await writer.WriteAsync(",");

                            await TypeHelper.FullName(writer, genericArguments[i], t => t.Name, "&lt;", "&gt;");
                        }

                        await writer.WriteAsync("&gt;");
                    }

                    await writer.WriteAsync("(");

                    var parameters = method.GetParameters();

                    if (parameters.Length > 0)
                    {
                        await TypeHelper.FullName(writer, parameters[0].ParameterType, t => t.Name, "&lt;", "&gt;");

                        for (var i = 1; i < parameters.Length; i++)
                        {
                            await writer.WriteAsync(", ");

                            await TypeHelper.FullName(writer, parameters[i].ParameterType, t => t.Name, "&lt;", "&gt;");
                        }
                    }

                    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();
                }
            }
        }