protected virtual string Tok()

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