in source/dotnet/Library/AdaptiveCards/MarkedNet/MarkedNet/Parser.cs [88:205]
protected virtual string Tok()
{
switch (this.token.Type)
{
case "space":
{
return String.Empty;
}
case "hr":
{
return _options.Renderer.Hr();
}
case "heading":
{
return _options.Renderer.Heading(this.inline.Output(this.token.Text), this.token.Depth, this.token.Text);
}
case "code":
{
return _options.Renderer.Code(this.token.Text, this.token.Lang, this.token.Escaped);
}
case "table":
{
string header = String.Empty, body = String.Empty;
// header
var cell = String.Empty;
for (int i = 0; i < this.token.Header.Count; i++)
{
cell += _options.Renderer.TableCell(
this.inline.Output(this.token.Header[i]),
new TableCellFlags { Header = true, Align = i < this.token.Align.Count ? this.token.Align[i] : null }
);
}
header += _options.Renderer.TableRow(cell);
for (int i = 0; i < this.token.Cells.Count; i++)
{
var row = this.token.Cells[i];
cell = String.Empty;
for (int j = 0; j < row.Count; j++)
{
cell += _options.Renderer.TableCell(
this.inline.Output(row[j]),
new TableCellFlags { Header = false, Align = j < this.token.Align.Count ? this.token.Align[j] : null }
);
}
body += _options.Renderer.TableRow(cell);
}
return _options.Renderer.Table(header, body);
}
case "blockquote_start":
{
var body = String.Empty;
while (this.Next().Type != "blockquote_end")
{
body += this.Tok();
}
return _options.Renderer.Blockquote(body);
}
case "list_start":
{
var body = String.Empty;
var ordered = this.token.Ordered;
var start = this.token.Start;
while (this.Next().Type != "list_end")
{
body += this.Tok();
}
return _options.Renderer.List(body, ordered, start);
}
case "list_item_start":
{
var body = String.Empty;
while (this.Next().Type != "list_item_end")
{
body += this.token.Type == "text"
? this.ParseText()
: this.Tok();
}
return _options.Renderer.ListItem(body);
}
case "loose_item_start":
{
var body = String.Empty;
while (this.Next().Type != "list_item_end")
{
body += this.Tok();
}
return _options.Renderer.ListItem(body);
}
case "html":
{
var html = !this.token.Pre && !this._options.Pedantic
? this.inline.Output(this.token.Text)
: this.token.Text;
return _options.Renderer.Html(html);
}
case "paragraph":
{
return _options.Renderer.Paragraph(this.inline.Output(this.token.Text));
}
case "text":
{
return _options.Renderer.Paragraph(this.ParseText());
}
}
throw new Exception();
}