|
- package ast
-
- import (
- "fmt"
- gast "github.com/yuin/goldmark/ast"
- "strings"
- )
-
- // Alignment is a text alignment of table cells.
- type Alignment int
-
- const (
- // AlignLeft indicates text should be left justified.
- AlignLeft Alignment = iota + 1
-
- // AlignRight indicates text should be right justified.
- AlignRight
-
- // AlignCenter indicates text should be centered.
- AlignCenter
-
- // AlignNone indicates text should be aligned by default manner.
- AlignNone
- )
-
- func (a Alignment) String() string {
- switch a {
- case AlignLeft:
- return "left"
- case AlignRight:
- return "right"
- case AlignCenter:
- return "center"
- case AlignNone:
- return "none"
- }
- return ""
- }
-
- // A Table struct represents a table of Markdown(GFM) text.
- type Table struct {
- gast.BaseBlock
-
- // Alignments returns alignments of the columns.
- Alignments []Alignment
- }
-
- // Dump implements Node.Dump
- func (n *Table) Dump(source []byte, level int) {
- gast.DumpHelper(n, source, level, nil, func(level int) {
- indent := strings.Repeat(" ", level)
- fmt.Printf("%sAlignments {\n", indent)
- for i, alignment := range n.Alignments {
- indent2 := strings.Repeat(" ", level+1)
- fmt.Printf("%s%s", indent2, alignment.String())
- if i != len(n.Alignments)-1 {
- fmt.Println("")
- }
- }
- fmt.Printf("\n%s}\n", indent)
- })
- }
-
- // KindTable is a NodeKind of the Table node.
- var KindTable = gast.NewNodeKind("Table")
-
- // Kind implements Node.Kind.
- func (n *Table) Kind() gast.NodeKind {
- return KindTable
- }
-
- // NewTable returns a new Table node.
- func NewTable() *Table {
- return &Table{
- Alignments: []Alignment{},
- }
- }
-
- // A TableRow struct represents a table row of Markdown(GFM) text.
- type TableRow struct {
- gast.BaseBlock
- Alignments []Alignment
- }
-
- // Dump implements Node.Dump.
- func (n *TableRow) Dump(source []byte, level int) {
- gast.DumpHelper(n, source, level, nil, nil)
- }
-
- // KindTableRow is a NodeKind of the TableRow node.
- var KindTableRow = gast.NewNodeKind("TableRow")
-
- // Kind implements Node.Kind.
- func (n *TableRow) Kind() gast.NodeKind {
- return KindTableRow
- }
-
- // NewTableRow returns a new TableRow node.
- func NewTableRow(alignments []Alignment) *TableRow {
- return &TableRow{}
- }
-
- // A TableHeader struct represents a table header of Markdown(GFM) text.
- type TableHeader struct {
- gast.BaseBlock
- Alignments []Alignment
- }
-
- // KindTableHeader is a NodeKind of the TableHeader node.
- var KindTableHeader = gast.NewNodeKind("TableHeader")
-
- // Kind implements Node.Kind.
- func (n *TableHeader) Kind() gast.NodeKind {
- return KindTableHeader
- }
-
- // Dump implements Node.Dump.
- func (n *TableHeader) Dump(source []byte, level int) {
- gast.DumpHelper(n, source, level, nil, nil)
- }
-
- // NewTableHeader returns a new TableHeader node.
- func NewTableHeader(row *TableRow) *TableHeader {
- n := &TableHeader{}
- for c := row.FirstChild(); c != nil; {
- next := c.NextSibling()
- n.AppendChild(n, c)
- c = next
- }
- return n
- }
-
- // A TableCell struct represents a table cell of a Markdown(GFM) text.
- type TableCell struct {
- gast.BaseBlock
- Alignment Alignment
- }
-
- // Dump implements Node.Dump.
- func (n *TableCell) Dump(source []byte, level int) {
- gast.DumpHelper(n, source, level, nil, nil)
- }
-
- // KindTableCell is a NodeKind of the TableCell node.
- var KindTableCell = gast.NewNodeKind("TableCell")
-
- // Kind implements Node.Kind.
- func (n *TableCell) Kind() gast.NodeKind {
- return KindTableCell
- }
-
- // NewTableCell returns a new TableCell node.
- func NewTableCell() *TableCell {
- return &TableCell{
- Alignment: AlignNone,
- }
- }
|