예제 #1
0
        public TypeDocumentation GetTypeDocumentation(TypeDefinition typeDefinition)
        {
            if (typeDocs.TryGetValue(typeDefinition, out var docs))
            {
                return(docs);
            }
            var asmName = typeDefinition.Module.Assembly.Name.Name;

            docs = new TypeDocumentation(typeDefinition, framework, XmlDocs, decompiler, idecompiler, format);
            typeDocs.TryAdd(typeDefinition, docs);
            return(docs);
        }
예제 #2
0
        public TypeDocumentation GetTypeDocumentation(TypeDefinition typeDefinition)
        {
            if (typeDocs.TryGetValue(typeDefinition, out var docs))
            {
                return(docs);
            }
            var asmName = typeDefinition.Module.Assembly.Name.Name;

            AssemblyXmlDocs.TryGetValue(asmName, out var xmlDocs);
            docs = new TypeDocumentation(typeDefinition, xmlDocs);
            typeDocs.TryAdd(typeDefinition, docs);
            return(docs);
        }
예제 #3
0
        public static void WritePrototypeHtml(this FieldDefinition member, TextWriter w, PackageTargetFramework framework, bool linkToCode)
        {
            if (!member.DeclaringType.IsEnum)
            {
                if (member.IsFamily || member.IsFamilyOrAssembly)
                {
                    w.Write("<span class=\"c-kw\">protected</span> ");
                }
                else if (member.IsPublic)
                {
                    w.Write("<span class=\"c-kw\">public</span> ");
                }

                if (member.HasConstant)
                {
                    w.Write("<span class=\"c-kw\">const</span> ");
                }
                else
                {
                    if (member.IsStatic)
                    {
                        w.Write("<span class=\"c-kw\">static</span> ");
                    }
                    if (member.IsInitOnly)
                    {
                        w.Write("<span class=\"c-kw\">readonly</span> ");
                    }
                }
                WriteReferenceHtml(member.FieldType, w, framework);
                w.Write(" ");
            }
            var id   = member.GetXmlName();
            var href = GetHref(member, framework, linkToCode);

            w.Write($"<a {href} id=\"{id}\" class=\"c-fd\">");
            WriteEncoded(member.Name, w);
            w.Write("</a>");
            if (member.HasConstant)
            {
                w.Write(" = ");
                TypeDocumentation.WritePrimitiveHtml(member.Constant, w);
            }
        }
예제 #4
0
        public TypeDocumentation GetTypeDocumentation(TypeDefinition typeDefinition, string rawLanguageCode)
        {
            var languageCode = rawLanguageCode.Trim().ToLowerInvariant();

            if (string.IsNullOrEmpty(languageCode))
            {
                languageCode = "en";
            }

            var key = Tuple.Create(typeDefinition, languageCode);

            if (typeDocs.TryGetValue(key, out var docs))
            {
                return(docs);
            }
            var asmName = typeDefinition.Module.Assembly.Name.Name;

            docs = new TypeDocumentation(typeDefinition, framework, XmlDocs, decompiler, idecompiler, format, languageCode);
            typeDocs.TryAdd(key, docs);
            return(docs);
        }
예제 #5
0
        public static void WritePrototypeHtml(this MethodDefinition member, TextWriter w, PackageTargetFramework framework, bool linkToCode)
        {
            if (!member.DeclaringType.IsInterface)
            {
                if (member.IsFamily || member.IsFamilyOrAssembly)
                {
                    w.Write("<span class=\"c-kw\">protected</span> ");
                }
                else if (member.IsPublic)
                {
                    w.Write("<span class=\"c-kw\">public</span> ");
                }
                if (member.IsStatic)
                {
                    w.Write("<span class=\"c-kw\">static</span> ");
                }
            }
            var id   = member.GetXmlName();
            var href = GetHref(member, framework, linkToCode);

            if (member.IsConstructor)
            {
                w.Write($"<a {href} id=\"{id}\" class=\"c-cd\">");
                var name = member.DeclaringType.Name;
                var ni   = name.LastIndexOf('`');
                if (ni > 0)
                {
                    name = name.Substring(0, ni);
                }
                WriteEncoded(name, w);
            }
            else
            {
                if (!member.DeclaringType.IsInterface)
                {
                    if (member.IsAbstract)
                    {
                        w.Write("<span class=\"c-kw\">abstract</span> ");
                    }
                    else if (member.IsVirtual)
                    {
                        if (member.IsReuseSlot)
                        {
                            w.Write("<span class=\"c-kw\">override</span> ");
                        }
                        else if (!member.IsFinal)
                        {
                            w.Write("<span class=\"c-kw\">virtual</span> ");
                        }
                    }
                }
                WriteReferenceHtml(member.ReturnType, w, framework);
                w.Write($" <a {href} id=\"{id}\" class=\"c-md\">");
                WriteEncoded(member.Name, w);
            }
            w.Write("</a>");
            var head = "";

            if (member.HasGenericParameters)
            {
                w.Write("&lt;");
                head = "";
                foreach (var p in member.GenericParameters)
                {
                    w.Write(head);
                    WriteReferenceHtml(p, w, framework);
                    head = ", ";
                }
                w.Write("&gt;");
            }
            w.Write("(");
            head = "";
            foreach (var p in member.Parameters)
            {
                w.Write(head);
                WriteReferenceHtml(p.ParameterType, w, framework, p.IsOut);
                w.Write(" <span class=\"c-ar\">");
                WriteEncoded(p.Name, w);
                w.Write("</span>");
                if (p.HasConstant)
                {
                    w.Write(" = ");
                    TypeDocumentation.WritePrimitiveHtml(p.Constant, w);
                }
                head = ", ";
            }
            w.Write(")");
        }
예제 #6
0
        public static void WritePrototypeHtml(this MethodDefinition member, TextWriter w, PackageTargetFramework framework, MemberXmlDocs docs, bool linkToCode, bool inExtensionClass)
        {
            if (!member.DeclaringType.IsInterface)
            {
                if (member.IsFamily || member.IsFamilyOrAssembly)
                {
                    w.Write("<span class=\"c-kw\">protected</span> ");
                }
                else if (member.IsPublic)
                {
                    w.Write("<span class=\"c-kw\">public</span> ");
                }
                if (member.IsStatic)
                {
                    w.Write("<span class=\"c-kw\">static</span> ");
                }
            }
            var id   = member.GetXmlName();
            var href = GetHref(member, framework, linkToCode);

            if (member.IsConstructor)
            {
                w.Write($"<a {href} id=\"{id}\" class=\"c-cd\">");
                var name = member.DeclaringType.Name;
                var ni   = name.LastIndexOf('`');
                if (ni > 0)
                {
                    name = name.Substring(0, ni);
                }
                WriteEncoded(name, w);
            }
            else
            {
                if (!member.DeclaringType.IsInterface)
                {
                    if (member.IsAbstract)
                    {
                        w.Write("<span class=\"c-kw\">abstract</span> ");
                    }
                    else if (member.IsVirtual)
                    {
                        if (member.IsReuseSlot)
                        {
                            w.Write("<span class=\"c-kw\">override</span> ");
                        }
                        else if (!member.IsFinal)
                        {
                            w.Write("<span class=\"c-kw\">virtual</span> ");
                        }
                    }
                }
                WriteReferenceHtml(member.ReturnType, w, framework);
                w.Write($" <a {href} id=\"{id}\" class=\"c-md\">");
                WriteEncoded(member.Name, w);
            }
            w.Write("</a>");
            var head = "";

            if (member.HasGenericParameters)
            {
                WriteGenericParameterListHtml(member.GenericParameters, w, framework, docs);
            }
            w.Write("(");
            head = "";

            bool isExtensionMethod = inExtensionClass && member.HasExtensionAttribute();

            foreach (var p in member.Parameters)
            {
                w.Write(head);
                WriteReferenceHtml(p.ParameterType, w, framework, p.IsOut, isExtensionMethod);
                w.Write(" <span class=\"c-ar\" title=\"");
                WriteEncoded(docs != null && docs.ParametersText.TryGetValue(p.Name, out var paramText) ? paramText : string.Empty, w);
                w.Write("\">");
                WriteEncoded(p.Name, w);
                w.Write("</span>");
                if (p.HasConstant)
                {
                    w.Write(" = ");
                    var constant = p.Constant;
                    if (constant == null && p.ParameterType.IsValueType)
                    {
                        w.Write("<span class=\"c-nl\">default</span>");
                    }
                    else
                    {
                        TypeDocumentation.WritePrimitiveHtml(constant, w);
                    }
                }
                head = ", ";

                isExtensionMethod = false;
            }
            w.Write(")");
            if (member.HasGenericParameters)
            {
                WriteGenericConstraintsHtml(member.GenericParameters, w, framework);
            }
        }