コード例 #1
0
ファイル: JsonTokenTreeRenderer.cs プロジェクト: dotnet/docfx
 public virtual StringBuffer Render(IMarkdownRenderer renderer, MarkdownListBlockToken token, MarkdownBlockContext context)
 {
     var type = token.Ordered ? "ol" : "ul";
     var childContent = StringBuffer.Empty;
     foreach (var item in token.Tokens)
     {
         childContent += Render(renderer, (MarkdownListItemBlockToken) item);
     }
     return Insert(token, type, childContent);
 }
コード例 #2
0
        public virtual StringBuffer Render(IMarkdownRenderer renderer, MarkdownListBlockToken token, MarkdownBlockContext context)
        {
            var type         = token.Ordered ? "ol" : "ul";
            var childContent = StringBuffer.Empty;

            foreach (var item in token.Tokens)
            {
                childContent += Render(renderer, (MarkdownListItemBlockToken)item);
            }
            return(Insert(token, type, childContent));
        }
コード例 #3
0
        public override StringBuffer Render(IMarkdownRenderer render, MarkdownListBlockToken token, MarkdownBlockContext context)
        {
            var content = StringBuffer.Empty;

            if (!token.Ordered)
            {
                var match       = _unorderListStart.Match(token.SourceInfo.Markdown);
                var startString = match.Success ? match.Groups["start"] + " " : "* ";
                for (int i = 0; i < token.Tokens.Length; ++i)
                {
                    var t             = token.Tokens[i];
                    var listItemToken = t as MarkdownListItemBlockToken;
                    if (listItemToken == null)
                    {
                        throw new Exception($"token {t.GetType()} is not unordered MarkdownListItemBlockToken in MarkdownListBlockToken. Token raw:{t.SourceInfo.Markdown}");
                    }
                    content += startString;
                    if (i == token.Tokens.Length - 1)
                    {
                        content += Render(render, listItemToken, "  ", true);
                    }
                    else
                    {
                        content += Render(render, listItemToken, "  ");
                    }
                }
            }
            else
            {
                var match = _orderListStart.Match(token.SourceInfo.Markdown);
                var start = 1;
                if (match.Success)
                {
                    var value = match.Groups["start"].Value;
                    if (Int32.TryParse(value, out int result))
                    {
                        start = result;
                    }
                }

                for (int i = 0; i < token.Tokens.Length; ++i)
                {
                    var listItemToken = token.Tokens[i] as MarkdownListItemBlockToken;

                    if (listItemToken == null)
                    {
                        throw new Exception($"token {token.Tokens[i].GetType()} is not ordered MarkdownListItemBlockToken in MarkdownListBlockToken. Token raw:{token.Tokens[i].SourceInfo.Markdown}");
                    }

                    content += $"{start + i}. ";
                    string indent = new string(' ', (i + 1).ToString().Length + 2);
                    if (i == token.Tokens.Length - 1)
                    {
                        content += Render(render, listItemToken, indent, true);
                    }
                    else
                    {
                        content += Render(render, listItemToken, indent);
                    }
                }
            }

            return(content);
        }