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