示例#1
0
 public void Render(
     HtmlTextWriter writer,
     TypeSignature signature,
     TypeRenderOption options)
 {
     Render(writer, signature, options, false);
 }
示例#2
0
 public void Render(
     HtmlTextWriter writer,
     TypeSignature signature,
     TypeRenderOption options)
 {
     Render(writer, signature, options, false);
 }
示例#3
0
        public override void VisitSee(SeeComment comment, CommentRendererContext context)
        {
            var identity = comment.Member;
            var member   = context.ApiContext.Resolver.FindType(comment.Member);

            if (member != null)
            {
                var signature = member.Definition.GetTypeSignature(context.ApiContext.UrlResolver);
                const TypeRenderOption options = TypeRenderOption.Link | TypeRenderOption.Name;
                var result = context.ApiContext.SignatureRenderer.Render(context.ApiContext.Language, signature, options);
                context.Builder.AppendRaw(result);
            }
            else
            {
                // TODO: We need to find the link to external types. Save this for later.
                context.Builder.AppendRaw("<i>");
                var name = context.ApiContext.Language.GetAlias(identity);
                if (name == null)
                {
                    var index = identity.IndexOf(':');
                    context.Builder.AppendEncoded(index != 0 ? identity.Substring(index + 1) : "???");
                }
                else
                {
                    context.Builder.AppendEncoded("????");
                }
                context.Builder.AppendRaw("</i>");
            }
        }
示例#4
0
 public IHtmlString Render(
     TypeSignature signature,
     TypeRenderOption options)
 {
     var builder = new HtmlTextWriter(new StringWriter());
     Render(builder, signature, options, false);
     return MvcHtmlString.Create(builder.InnerWriter.ToString());
 }
示例#5
0
        public IHtmlString Render(
            TypeSignature signature,
            TypeRenderOption options)
        {
            var builder = new HtmlTextWriter(new StringWriter());

            Render(builder, signature, options, false);
            return(MvcHtmlString.Create(builder.InnerWriter.ToString()));
        }
示例#6
0
        public string Render(
            ILanguageProvider language,
            TypeSignature signature,
            TypeRenderOption options)
        {
            var builder = new EncodedStringBuilder();

            Render(builder, language, signature, options, false);
            return(builder.ToString());
        }
示例#7
0
        private void Render(
            HtmlTextWriter writer,
            TypeSignature signature,
            TypeRenderOption options,
            bool isWritingLink)
        {
            var needToCloseLink = false;
            var documentedType = _model.FindType(signature.Identity);

            // Writing link?
            if ((options & TypeRenderOption.Link) == TypeRenderOption.Link)
            {
                if (!isWritingLink && documentedType != null)
                {
                    if (signature.Url != null)
                    {
                        isWritingLink = needToCloseLink = true;

                        writer.AddAttribute(HtmlTextWriterAttribute.Href, signature.Url);
                        writer.RenderBeginTag(HtmlTextWriterTag.A);
                    }
                }
            }

            // Write type namespace?
            if ((options & TypeRenderOption.Namespace) == TypeRenderOption.Namespace)
            {
                writer.WriteEncodedText(signature.Namespace.Name);
            }

            // Write type name?
            if ((options & TypeRenderOption.Name) == TypeRenderOption.Name)
            {
                if ((options & TypeRenderOption.Namespace) == TypeRenderOption.Namespace)
                {
                    writer.WriteEncodedText(".\u200B");
                }

                var alias = _language.GetAlias(signature.Identity);
                var name = alias ?? signature.Name;
                writer.WriteEncodedText(name);

                if (signature.GenericArguments.Count != 0)
                {
                    // Write generic arguments.
                    writer.WriteEncodedText("<");
                    var result = new List<string>();
                    foreach (var argument in signature.GenericArguments)
                    {
                        result.Add(argument);
                    }
                    writer.WriteEncodedText(string.Join(", \u200B", result));
                    writer.WriteEncodedText(">");
                }
                else if (signature.GenericParameters.Count != 0)
                {
                    // Write generic parameters.
                    writer.Write("<");
                    var result = new List<string>();
                    var parameterIndex = 0;
                    foreach (var parameter in signature.GenericParameters)
                    {
                        parameterIndex++;
                        Render(writer, parameter, options, isWritingLink);
                        if (parameterIndex != signature.GenericParameters.Count)
                        {
                            writer.WriteEncodedText(",\u200B");
                            writer.WriteEncodedText(" ");
                        }
                    }
                    writer.WriteEncodedText(string.Join(", \u200B", result));
                    writer.Write(">");
                }
            }

            // Writing link?
            if ((options & TypeRenderOption.Link) == TypeRenderOption.Link)
            {
                if (needToCloseLink)
                {
                    writer.RenderEndTag();
                }
            }
        }
示例#8
0
        private void Render(
            EncodedStringBuilder builder,
            ILanguageProvider language,
            TypeSignature signature,
            TypeRenderOption options,
            bool isWritingLink)
        {
            var needToCloseLink = false;
            var documentedType  = _model.FindType(signature.Identity);

            // Writing link?
            if ((options & TypeRenderOption.Link) == TypeRenderOption.Link)
            {
                if (!isWritingLink && documentedType != null)
                {
                    if (signature.Url != null)
                    {
                        isWritingLink = needToCloseLink = true;
                        builder.AppendRaw("<a href=\"{0}\">", signature.Url);
                    }
                }
            }

            // Write type namespace?
            if ((options & TypeRenderOption.Namespace) == TypeRenderOption.Namespace)
            {
                builder.AppendEncoded(signature.Namespace.Name);

                if ((options & TypeRenderOption.Namespace) == TypeRenderOption.Namespace)
                {
                    builder.AppendEncoded(".");
                }
            }

            // Write type name?
            if ((options & TypeRenderOption.Name) == TypeRenderOption.Name)
            {
                var alias = language.GetAlias(signature.Identity);
                var name  = alias ?? signature.Name;
                builder.AppendEncoded(name);
            }

            if (signature.GenericArguments.Count != 0)
            {
                // Write generic arguments.
                builder.AppendEncoded("<");
                var result = new List <string>();
                foreach (var argument in signature.GenericArguments)
                {
                    result.Add(argument);
                }
                builder.AppendEncoded(string.Join(", ", result));
                builder.AppendEncoded(">");
            }
            else if (signature.GenericParameters.Count != 0)
            {
                // Write generic parameters.
                builder.AppendEncoded("<");
                var result = new List <string>();
                foreach (var parameter in signature.GenericParameters)
                {
                    Render(builder, language, parameter, options, isWritingLink);
                }
                builder.AppendEncoded(string.Join(", ", result));
                builder.AppendEncoded(">");
            }

            // Writing link?
            if ((options & TypeRenderOption.Link) == TypeRenderOption.Link)
            {
                if (needToCloseLink)
                {
                    builder.AppendRaw("</a>");
                }
            }
        }
示例#9
0
 public string Render(ILanguageProvider language, TypeSignature signature, TypeRenderOption options)
 {
     return(_typeRenderer.Render(language, signature, options));
 }
示例#10
0
 public IHtmlString Render(TypeSignature type, TypeRenderOption option)
 {
     return(_typeRenderer.Render(type, option));
 }
示例#11
0
 public void Render(HtmlTextWriter writer, TypeSignature type, TypeRenderOption option)
 {
     _typeRenderer.Render(writer, type, option);
 }
示例#12
0
        private void Render(
            HtmlTextWriter writer,
            TypeSignature signature,
            TypeRenderOption options,
            bool isWritingLink)
        {
            var needToCloseLink = false;
            var documentedType  = _model.FindType(signature.Identity);

            // Writing link?
            if ((options & TypeRenderOption.Link) == TypeRenderOption.Link)
            {
                if (!isWritingLink && documentedType != null)
                {
                    if (signature.Url != null)
                    {
                        isWritingLink = needToCloseLink = true;

                        writer.AddAttribute(HtmlTextWriterAttribute.Href, signature.Url);
                        writer.RenderBeginTag(HtmlTextWriterTag.A);
                    }
                }
            }

            // Write type namespace?
            if ((options & TypeRenderOption.Namespace) == TypeRenderOption.Namespace)
            {
                writer.WriteEncodedText(signature.Namespace.Name);
            }

            // Write type name?
            if ((options & TypeRenderOption.Name) == TypeRenderOption.Name)
            {
                if ((options & TypeRenderOption.Namespace) == TypeRenderOption.Namespace)
                {
                    writer.WriteEncodedText(".\u200B");
                }

                var alias = _language.GetAlias(signature.Identity);
                var name  = alias ?? signature.Name;
                writer.WriteEncodedText(name);

                if (signature.GenericArguments.Count != 0)
                {
                    // Write generic arguments.
                    writer.WriteEncodedText("<");
                    var result = new List <string>();
                    foreach (var argument in signature.GenericArguments)
                    {
                        result.Add(argument);
                    }
                    writer.WriteEncodedText(string.Join(", \u200B", result));
                    writer.WriteEncodedText(">");
                }
                else if (signature.GenericParameters.Count != 0)
                {
                    // Write generic parameters.
                    writer.WriteEncodedText("<");
                    var result         = new List <string>();
                    var parameterIndex = 0;
                    foreach (var parameter in signature.GenericParameters)
                    {
                        parameterIndex++;
                        Render(writer, parameter, options, isWritingLink);
                        if (parameterIndex != signature.GenericParameters.Count)
                        {
                            writer.WriteEncodedText(",\u200B");
                            writer.WriteEncodedText(" ");
                        }
                    }
                    writer.WriteEncodedText(string.Join(", \u200B", result));
                    writer.WriteEncodedText(">");
                }
            }

            // Writing link?
            if ((options & TypeRenderOption.Link) == TypeRenderOption.Link)
            {
                if (needToCloseLink)
                {
                    writer.RenderEndTag();
                }
            }
        }
示例#13
0
 public IHtmlString Render(TypeSignature type, TypeRenderOption option)
 {
     return _typeRenderer.Render(type, option);
 }
示例#14
0
 public void Render(HtmlTextWriter writer, TypeSignature type, TypeRenderOption option)
 {
     _typeRenderer.Render(writer, type, option);
 }