Documentation ¶
Overview ¶
Example (Simple) ¶
// simple table with zero customizations tw := NewWriter() // append a header row tw.AppendHeader(Row{"#", "First Name", "Last Name", "Salary"}) // append some data rows tw.AppendRows([]Row{ {1, "Arya", "Stark", 3000}, {20, "Jon", "Snow", 2000, "You know nothing, Jon Snow!"}, {300, "Tyrion", "Lannister", 5000}, }) // append a footer row tw.AppendFooter(Row{"", "", "Total", 10000}) // render it fmt.Printf("Table without any customizations:\n%s", tw.Render())
Output: Table without any customizations: +-----+------------+-----------+--------+-----------------------------+ | # | FIRST NAME | LAST NAME | SALARY | | +-----+------------+-----------+--------+-----------------------------+ | 1 | Arya | Stark | 3000 | | | 20 | Jon | Snow | 2000 | You know nothing, Jon Snow! | | 300 | Tyrion | Lannister | 5000 | | +-----+------------+-----------+--------+-----------------------------+ | | | TOTAL | 10000 | | +-----+------------+-----------+--------+-----------------------------+
Example (Styled) ¶
// table with some amount of customization tw := NewWriter() // append a header row tw.AppendHeader(Row{"First Name", "Last Name", "Salary"}) // append some data rows tw.AppendRows([]Row{ {"Jaime", "Lannister", 5000}, {"Arya", "Stark", 3000, "A girl has no name."}, {"Sansa", "Stark", 4000}, {"Jon", "Snow", 2000, "You know nothing, Jon Snow!"}, {"Tyrion", "Lannister", 5000, "A Lannister always pays his debts."}, }) // append a footer row tw.AppendFooter(Row{"", "Total", 10000}) // auto-index rows tw.SetAutoIndex(true) // sort by last name and then by salary tw.SortBy([]SortBy{{Name: "Last Name", Mode: Dsc}, {Name: "Salary", Mode: AscNumeric}}) // use a ready-to-use style tw.SetStyle(StyleLight) // customize the style and change some stuff tw.Style().Format.Header = text.FormatLower tw.Style().Format.Row = text.FormatLower tw.Style().Format.Footer = text.FormatLower tw.Style().Options.SeparateColumns = false // render it fmt.Printf("Table with customizations:\n%s", tw.Render())
Output: Table with customizations: ┌──────────────────────────────────────────────────────────────────────┐ │ first name last name salary │ ├──────────────────────────────────────────────────────────────────────┤ │ 1 arya stark 3000 a girl has no name. │ │ 2 sansa stark 4000 │ │ 3 jon snow 2000 you know nothing, jon snow! │ │ 4 jaime lannister 5000 │ │ 5 tyrion lannister 5000 a lannister always pays his debts. │ ├──────────────────────────────────────────────────────────────────────┤ │ total 10000 │ └──────────────────────────────────────────────────────────────────────┘
Index ¶
- Constants
- Variables
- func AutoIndexColumnID(colIdx int) string
- type BoxStyle
- type ColorOptions
- type ColumnConfig
- type FormatOptions
- type Options
- type Row
- type RowPainter
- type SortBy
- type SortMode
- type Style
- type Table
- func (t *Table) AppendFooter(row Row)
- func (t *Table) AppendHeader(row Row)
- func (t *Table) AppendRow(row Row)
- func (t *Table) AppendRows(rows []Row)
- func (t *Table) Length() int
- func (t *Table) Render() string
- func (t *Table) RenderCSV() string
- func (t *Table) RenderHTML() string
- func (t *Table) RenderMarkdown() string
- func (t *Table) SetAlign(align []text.Align)deprecated
- func (t *Table) SetAlignFooter(align []text.Align)deprecated
- func (t *Table) SetAlignHeader(align []text.Align)deprecated
- func (t *Table) SetAllowedColumnLengths(lengths []int)deprecated
- func (t *Table) SetAllowedRowLength(length int)
- func (t *Table) SetAutoIndex(autoIndex bool)
- func (t *Table) SetCaption(format string, a ...interface{})
- func (t *Table) SetColors(colors []text.Colors)deprecated
- func (t *Table) SetColorsFooter(colors []text.Colors)deprecated
- func (t *Table) SetColorsHeader(colors []text.Colors)deprecated
- func (t *Table) SetColumnConfigs(configs []ColumnConfig)
- func (t *Table) SetHTMLCSSClass(cssClass string)
- func (t *Table) SetIndexColumn(colNum int)
- func (t *Table) SetOutputMirror(mirror io.Writer)
- func (t *Table) SetPageSize(numLines int)
- func (t *Table) SetRowPainter(painter RowPainter)
- func (t *Table) SetStyle(style Style)
- func (t *Table) SetTitle(format string, a ...interface{})
- func (t *Table) SetVAlign(vAlign []text.VAlign)deprecated
- func (t *Table) SetVAlignFooter(vAlign []text.VAlign)deprecated
- func (t *Table) SetVAlignHeader(vAlign []text.VAlign)deprecated
- func (t *Table) SortBy(sortBy []SortBy)
- func (t *Table) Style() *Style
- type TitleOptions
- type Writer
Examples ¶
Constants ¶
const ( // DefaultHTMLCSSClass stores the css-class to use when none-provided via // SetHTMLCSSClass(cssClass string). DefaultHTMLCSSClass = "go-pretty-table" )
Variables ¶
var ( // StyleDefault renders a Table like below: // +-----+------------+-----------+--------+-----------------------------+ // | # | FIRST NAME | LAST NAME | SALARY | | // +-----+------------+-----------+--------+-----------------------------+ // | 1 | Arya | Stark | 3000 | | // | 20 | Jon | Snow | 2000 | You know nothing, Jon Snow! | // | 300 | Tyrion | Lannister | 5000 | | // +-----+------------+-----------+--------+-----------------------------+ // | | | TOTAL | 10000 | | // +-----+------------+-----------+--------+-----------------------------+ StyleDefault = Style{ Name: "StyleDefault", Box: StyleBoxDefault, Color: ColorOptionsDefault, Format: FormatOptionsDefault, Options: OptionsDefault, Title: TitleOptionsDefault, } // StyleBold renders a Table like below: // ┏━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ // ┃ # ┃ FIRST NAME ┃ LAST NAME ┃ SALARY ┃ ┃ // ┣━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ // ┃ 1 ┃ Arya ┃ Stark ┃ 3000 ┃ ┃ // ┃ 20 ┃ Jon ┃ Snow ┃ 2000 ┃ You know nothing, Jon Snow! ┃ // ┃ 300 ┃ Tyrion ┃ Lannister ┃ 5000 ┃ ┃ // ┣━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ // ┃ ┃ ┃ TOTAL ┃ 10000 ┃ ┃ // ┗━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ StyleBold = Style{ Name: "StyleBold", Box: StyleBoxBold, Color: ColorOptionsDefault, Format: FormatOptionsDefault, Options: OptionsDefault, Title: TitleOptionsDefault, } // StyleColoredBright renders a Table without any borders or separators, // and with Black text on Cyan background for Header/Footer and // White background for other rows. StyleColoredBright = Style{ Name: "StyleColoredBright", Box: StyleBoxDefault, Color: ColorOptionsBright, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsDark, } // StyleColoredDark renders a Table without any borders or separators, and // with Header/Footer in Cyan text and other rows with White text, all on // Black background. StyleColoredDark = Style{ Name: "StyleColoredDark", Box: StyleBoxDefault, Color: ColorOptionsDark, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBright, } // StyleColoredBlackOnBlueWhite renders a Table without any borders or // separators, and with Black text on Blue background for Header/Footer and // White background for other rows. StyleColoredBlackOnBlueWhite = Style{ Name: "StyleColoredBlackOnBlueWhite", Box: StyleBoxDefault, Color: ColorOptionsBlackOnBlueWhite, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBlueOnBlack, } // StyleColoredBlackOnCyanWhite renders a Table without any borders or // separators, and with Black text on Cyan background for Header/Footer and // White background for other rows. StyleColoredBlackOnCyanWhite = Style{ Name: "StyleColoredBlackOnCyanWhite", Box: StyleBoxDefault, Color: ColorOptionsBlackOnCyanWhite, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsCyanOnBlack, } // StyleColoredBlackOnGreenWhite renders a Table without any borders or // separators, and with Black text on Green background for Header/Footer and // White background for other rows. StyleColoredBlackOnGreenWhite = Style{ Name: "StyleColoredBlackOnGreenWhite", Box: StyleBoxDefault, Color: ColorOptionsBlackOnGreenWhite, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsGreenOnBlack, } // StyleColoredBlackOnMagentaWhite renders a Table without any borders or // separators, and with Black text on Magenta background for Header/Footer and // White background for other rows. StyleColoredBlackOnMagentaWhite = Style{ Name: "StyleColoredBlackOnMagentaWhite", Box: StyleBoxDefault, Color: ColorOptionsBlackOnMagentaWhite, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsMagentaOnBlack, } // StyleColoredBlackOnYellowWhite renders a Table without any borders or // separators, and with Black text on Yellow background for Header/Footer and // White background for other rows. StyleColoredBlackOnYellowWhite = Style{ Name: "StyleColoredBlackOnYellowWhite", Box: StyleBoxDefault, Color: ColorOptionsBlackOnYellowWhite, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsYellowOnBlack, } // StyleColoredBlackOnRedWhite renders a Table without any borders or // separators, and with Black text on Red background for Header/Footer and // White background for other rows. StyleColoredBlackOnRedWhite = Style{ Name: "StyleColoredBlackOnRedWhite", Box: StyleBoxDefault, Color: ColorOptionsBlackOnRedWhite, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsRedOnBlack, } // StyleColoredBlueWhiteOnBlack renders a Table without any borders or // separators, and with Header/Footer in Blue text and other rows with // White text, all on Black background. StyleColoredBlueWhiteOnBlack = Style{ Name: "StyleColoredBlueWhiteOnBlack", Box: StyleBoxDefault, Color: ColorOptionsBlueWhiteOnBlack, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBlackOnBlue, } // StyleColoredCyanWhiteOnBlack renders a Table without any borders or // separators, and with Header/Footer in Cyan text and other rows with // White text, all on Black background. StyleColoredCyanWhiteOnBlack = Style{ Name: "StyleColoredCyanWhiteOnBlack", Box: StyleBoxDefault, Color: ColorOptionsCyanWhiteOnBlack, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBlackOnCyan, } // StyleColoredGreenWhiteOnBlack renders a Table without any borders or // separators, and with Header/Footer in Green text and other rows with // White text, all on Black background. StyleColoredGreenWhiteOnBlack = Style{ Name: "StyleColoredGreenWhiteOnBlack", Box: StyleBoxDefault, Color: ColorOptionsGreenWhiteOnBlack, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBlackOnGreen, } // StyleColoredMagentaWhiteOnBlack renders a Table without any borders or // separators, and with Header/Footer in Magenta text and other rows with // White text, all on Black background. StyleColoredMagentaWhiteOnBlack = Style{ Name: "StyleColoredMagentaWhiteOnBlack", Box: StyleBoxDefault, Color: ColorOptionsMagentaWhiteOnBlack, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBlackOnMagenta, } // StyleColoredRedWhiteOnBlack renders a Table without any borders or // separators, and with Header/Footer in Red text and other rows with // White text, all on Black background. StyleColoredRedWhiteOnBlack = Style{ Name: "StyleColoredRedWhiteOnBlack", Box: StyleBoxDefault, Color: ColorOptionsRedWhiteOnBlack, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBlackOnRed, } // StyleColoredYellowWhiteOnBlack renders a Table without any borders or // separators, and with Header/Footer in Yellow text and other rows with // White text, all on Black background. StyleColoredYellowWhiteOnBlack = Style{ Name: "StyleColoredYellowWhiteOnBlack", Box: StyleBoxDefault, Color: ColorOptionsYellowWhiteOnBlack, Format: FormatOptionsDefault, Options: OptionsNoBordersAndSeparators, Title: TitleOptionsBlackOnYellow, } // StyleDouble renders a Table like below: // ╔═════╦════════════╦═══════════╦════════╦═════════════════════════════╗ // ║ # ║ FIRST NAME ║ LAST NAME ║ SALARY ║ ║ // ╠═════╬════════════╬═══════════╬════════╬═════════════════════════════╣ // ║ 1 ║ Arya ║ Stark ║ 3000 ║ ║ // ║ 20 ║ Jon ║ Snow ║ 2000 ║ You know nothing, Jon Snow! ║ // ║ 300 ║ Tyrion ║ Lannister ║ 5000 ║ ║ // ╠═════╬════════════╬═══════════╬════════╬═════════════════════════════╣ // ║ ║ ║ TOTAL ║ 10000 ║ ║ // ╚═════╩════════════╩═══════════╩════════╩═════════════════════════════╝ StyleDouble = Style{ Name: "StyleDouble", Box: StyleBoxDouble, Color: ColorOptionsDefault, Format: FormatOptionsDefault, Options: OptionsDefault, Title: TitleOptionsDefault, } // StyleLight renders a Table like below: // ┌─────┬────────────┬───────────┬────────┬─────────────────────────────┐ // │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 1 │ Arya │ Stark │ 3000 │ │ // │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ // │ 300 │ Tyrion │ Lannister │ 5000 │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ │ │ TOTAL │ 10000 │ │ // └─────┴────────────┴───────────┴────────┴─────────────────────────────┘ StyleLight = Style{ Name: "StyleLight", Box: StyleBoxLight, Color: ColorOptionsDefault, Format: FormatOptionsDefault, Options: OptionsDefault, Title: TitleOptionsDefault, } // StyleRounded renders a Table like below: // ╭─────┬────────────┬───────────┬────────┬─────────────────────────────╮ // │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 1 │ Arya │ Stark │ 3000 │ │ // │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ // │ 300 │ Tyrion │ Lannister │ 5000 │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ │ │ TOTAL │ 10000 │ │ // ╰─────┴────────────┴───────────┴────────┴─────────────────────────────╯ StyleRounded = Style{ Name: "StyleRounded", Box: StyleBoxRounded, Color: ColorOptionsDefault, Format: FormatOptionsDefault, Options: OptionsDefault, Title: TitleOptionsDefault, } )
var ( // StyleBoxDefault defines a Boxed-Table like below: // +-----+------------+-----------+--------+-----------------------------+ // | # | FIRST NAME | LAST NAME | SALARY | | // +-----+------------+-----------+--------+-----------------------------+ // | 1 | Arya | Stark | 3000 | | // | 20 | Jon | Snow | 2000 | You know nothing, Jon Snow! | // | 300 | Tyrion | Lannister | 5000 | | // +-----+------------+-----------+--------+-----------------------------+ // | | | TOTAL | 10000 | | // +-----+------------+-----------+--------+-----------------------------+ StyleBoxDefault = BoxStyle{ BottomLeft: "+", BottomRight: "+", BottomSeparator: "+", Left: "|", LeftSeparator: "+", MiddleHorizontal: "-", MiddleSeparator: "+", MiddleVertical: "|", PaddingLeft: " ", PaddingRight: " ", PageSeparator: "\n", Right: "|", RightSeparator: "+", TopLeft: "+", TopRight: "+", TopSeparator: "+", UnfinishedRow: " ~", } // StyleBoxBold defines a Boxed-Table like below: // ┏━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ // ┃ # ┃ FIRST NAME ┃ LAST NAME ┃ SALARY ┃ ┃ // ┣━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ // ┃ 1 ┃ Arya ┃ Stark ┃ 3000 ┃ ┃ // ┃ 20 ┃ Jon ┃ Snow ┃ 2000 ┃ You know nothing, Jon Snow! ┃ // ┃ 300 ┃ Tyrion ┃ Lannister ┃ 5000 ┃ ┃ // ┣━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ // ┃ ┃ ┃ TOTAL ┃ 10000 ┃ ┃ // ┗━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ StyleBoxBold = BoxStyle{ BottomLeft: "┗", BottomRight: "┛", BottomSeparator: "┻", Left: "┃", LeftSeparator: "┣", MiddleHorizontal: "━", MiddleSeparator: "╋", MiddleVertical: "┃", PaddingLeft: " ", PaddingRight: " ", PageSeparator: "\n", Right: "┃", RightSeparator: "┫", TopLeft: "┏", TopRight: "┓", TopSeparator: "┳", UnfinishedRow: " ≈", } // StyleBoxDouble defines a Boxed-Table like below: // ╔═════╦════════════╦═══════════╦════════╦═════════════════════════════╗ // ║ # ║ FIRST NAME ║ LAST NAME ║ SALARY ║ ║ // ╠═════╬════════════╬═══════════╬════════╬═════════════════════════════╣ // ║ 1 ║ Arya ║ Stark ║ 3000 ║ ║ // ║ 20 ║ Jon ║ Snow ║ 2000 ║ You know nothing, Jon Snow! ║ // ║ 300 ║ Tyrion ║ Lannister ║ 5000 ║ ║ // ╠═════╬════════════╬═══════════╬════════╬═════════════════════════════╣ // ║ ║ ║ TOTAL ║ 10000 ║ ║ // ╚═════╩════════════╩═══════════╩════════╩═════════════════════════════╝ StyleBoxDouble = BoxStyle{ BottomLeft: "╚", BottomRight: "╝", BottomSeparator: "╩", Left: "║", LeftSeparator: "╠", MiddleHorizontal: "═", MiddleSeparator: "╬", MiddleVertical: "║", PaddingLeft: " ", PaddingRight: " ", PageSeparator: "\n", Right: "║", RightSeparator: "╣", TopLeft: "╔", TopRight: "╗", TopSeparator: "╦", UnfinishedRow: " ≈", } // StyleBoxLight defines a Boxed-Table like below: // ┌─────┬────────────┬───────────┬────────┬─────────────────────────────┐ // │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 1 │ Arya │ Stark │ 3000 │ │ // │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ // │ 300 │ Tyrion │ Lannister │ 5000 │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ │ │ TOTAL │ 10000 │ │ // └─────┴────────────┴───────────┴────────┴─────────────────────────────┘ StyleBoxLight = BoxStyle{ BottomLeft: "└", BottomRight: "┘", BottomSeparator: "┴", Left: "│", LeftSeparator: "├", MiddleHorizontal: "─", MiddleSeparator: "┼", MiddleVertical: "│", PaddingLeft: " ", PaddingRight: " ", PageSeparator: "\n", Right: "│", RightSeparator: "┤", TopLeft: "┌", TopRight: "┐", TopSeparator: "┬", UnfinishedRow: " ≈", } // StyleBoxRounded defines a Boxed-Table like below: // ╭─────┬────────────┬───────────┬────────┬─────────────────────────────╮ // │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 1 │ Arya │ Stark │ 3000 │ │ // │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ // │ 300 │ Tyrion │ Lannister │ 5000 │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ │ │ TOTAL │ 10000 │ │ // ╰─────┴────────────┴───────────┴────────┴─────────────────────────────╯ StyleBoxRounded = BoxStyle{ BottomLeft: "╰", BottomRight: "╯", BottomSeparator: "┴", Left: "│", LeftSeparator: "├", MiddleHorizontal: "─", MiddleSeparator: "┼", MiddleVertical: "│", PaddingLeft: " ", PaddingRight: " ", PageSeparator: "\n", Right: "│", RightSeparator: "┤", TopLeft: "╭", TopRight: "╮", TopSeparator: "┬", UnfinishedRow: " ≈", } )
var ( // ColorOptionsDefault defines sensible ANSI color options - basically NONE. ColorOptionsDefault = ColorOptions{} // ColorOptionsBright renders dark text on bright background. ColorOptionsBright = ColorOptionsBlackOnCyanWhite // ColorOptionsDark renders bright text on dark background. ColorOptionsDark = ColorOptionsCyanWhiteOnBlack // ColorOptionsBlackOnBlueWhite renders Black text on Blue/White background. ColorOptionsBlackOnBlueWhite = ColorOptions{ IndexColumn: text.Colors{text.BgHiBlue, text.FgBlack}, Footer: text.Colors{text.BgBlue, text.FgBlack}, Header: text.Colors{text.BgHiBlue, text.FgBlack}, Row: text.Colors{text.BgHiWhite, text.FgBlack}, RowAlternate: text.Colors{text.BgWhite, text.FgBlack}, } // ColorOptionsBlackOnCyanWhite renders Black text on Cyan/White background. ColorOptionsBlackOnCyanWhite = ColorOptions{ IndexColumn: text.Colors{text.BgHiCyan, text.FgBlack}, Footer: text.Colors{text.BgCyan, text.FgBlack}, Header: text.Colors{text.BgHiCyan, text.FgBlack}, Row: text.Colors{text.BgHiWhite, text.FgBlack}, RowAlternate: text.Colors{text.BgWhite, text.FgBlack}, } // ColorOptionsBlackOnGreenWhite renders Black text on Green/White // background. ColorOptionsBlackOnGreenWhite = ColorOptions{ IndexColumn: text.Colors{text.BgHiGreen, text.FgBlack}, Footer: text.Colors{text.BgGreen, text.FgBlack}, Header: text.Colors{text.BgHiGreen, text.FgBlack}, Row: text.Colors{text.BgHiWhite, text.FgBlack}, RowAlternate: text.Colors{text.BgWhite, text.FgBlack}, } // ColorOptionsBlackOnMagentaWhite renders Black text on Magenta/White // background. ColorOptionsBlackOnMagentaWhite = ColorOptions{ IndexColumn: text.Colors{text.BgHiMagenta, text.FgBlack}, Footer: text.Colors{text.BgMagenta, text.FgBlack}, Header: text.Colors{text.BgHiMagenta, text.FgBlack}, Row: text.Colors{text.BgHiWhite, text.FgBlack}, RowAlternate: text.Colors{text.BgWhite, text.FgBlack}, } // ColorOptionsBlackOnRedWhite renders Black text on Red/White background. ColorOptionsBlackOnRedWhite = ColorOptions{ IndexColumn: text.Colors{text.BgHiRed, text.FgBlack}, Footer: text.Colors{text.BgRed, text.FgBlack}, Header: text.Colors{text.BgHiRed, text.FgBlack}, Row: text.Colors{text.BgHiWhite, text.FgBlack}, RowAlternate: text.Colors{text.BgWhite, text.FgBlack}, } // ColorOptionsBlackOnYellowWhite renders Black text on Yellow/White // background. ColorOptionsBlackOnYellowWhite = ColorOptions{ IndexColumn: text.Colors{text.BgHiYellow, text.FgBlack}, Footer: text.Colors{text.BgYellow, text.FgBlack}, Header: text.Colors{text.BgHiYellow, text.FgBlack}, Row: text.Colors{text.BgHiWhite, text.FgBlack}, RowAlternate: text.Colors{text.BgWhite, text.FgBlack}, } // ColorOptionsBlueWhiteOnBlack renders Blue/White text on Black background. ColorOptionsBlueWhiteOnBlack = ColorOptions{ IndexColumn: text.Colors{text.FgHiBlue, text.BgHiBlack}, Footer: text.Colors{text.FgBlue, text.BgHiBlack}, Header: text.Colors{text.FgHiBlue, text.BgHiBlack}, Row: text.Colors{text.FgHiWhite, text.BgBlack}, RowAlternate: text.Colors{text.FgWhite, text.BgBlack}, } // ColorOptionsCyanWhiteOnBlack renders Cyan/White text on Black background. ColorOptionsCyanWhiteOnBlack = ColorOptions{ IndexColumn: text.Colors{text.FgHiCyan, text.BgHiBlack}, Footer: text.Colors{text.FgCyan, text.BgHiBlack}, Header: text.Colors{text.FgHiCyan, text.BgHiBlack}, Row: text.Colors{text.FgHiWhite, text.BgBlack}, RowAlternate: text.Colors{text.FgWhite, text.BgBlack}, } // ColorOptionsGreenWhiteOnBlack renders Green/White text on Black // background. ColorOptionsGreenWhiteOnBlack = ColorOptions{ IndexColumn: text.Colors{text.FgHiGreen, text.BgHiBlack}, Footer: text.Colors{text.FgGreen, text.BgHiBlack}, Header: text.Colors{text.FgHiGreen, text.BgHiBlack}, Row: text.Colors{text.FgHiWhite, text.BgBlack}, RowAlternate: text.Colors{text.FgWhite, text.BgBlack}, } // ColorOptionsMagentaWhiteOnBlack renders Magenta/White text on Black // background. ColorOptionsMagentaWhiteOnBlack = ColorOptions{ IndexColumn: text.Colors{text.FgHiMagenta, text.BgHiBlack}, Footer: text.Colors{text.FgMagenta, text.BgHiBlack}, Header: text.Colors{text.FgHiMagenta, text.BgHiBlack}, Row: text.Colors{text.FgHiWhite, text.BgBlack}, RowAlternate: text.Colors{text.FgWhite, text.BgBlack}, } // ColorOptionsRedWhiteOnBlack renders Red/White text on Black background. ColorOptionsRedWhiteOnBlack = ColorOptions{ IndexColumn: text.Colors{text.FgHiRed, text.BgHiBlack}, Footer: text.Colors{text.FgRed, text.BgHiBlack}, Header: text.Colors{text.FgHiRed, text.BgHiBlack}, Row: text.Colors{text.FgHiWhite, text.BgBlack}, RowAlternate: text.Colors{text.FgWhite, text.BgBlack}, } // ColorOptionsYellowWhiteOnBlack renders Yellow/White text on Black // background. ColorOptionsYellowWhiteOnBlack = ColorOptions{ IndexColumn: text.Colors{text.FgHiYellow, text.BgHiBlack}, Footer: text.Colors{text.FgYellow, text.BgHiBlack}, Header: text.Colors{text.FgHiYellow, text.BgHiBlack}, Row: text.Colors{text.FgHiWhite, text.BgBlack}, RowAlternate: text.Colors{text.FgWhite, text.BgBlack}, } )
var ( // OptionsDefault defines sensible global options. OptionsDefault = Options{ DrawBorder: true, SeparateColumns: true, SeparateFooter: true, SeparateHeader: true, SeparateRows: false, } // OptionsNoBorders sets up a table without any borders. OptionsNoBorders = Options{ DrawBorder: false, SeparateColumns: true, SeparateFooter: true, SeparateHeader: true, SeparateRows: false, } // OptionsNoBordersAndSeparators sets up a table without any borders or // separators. OptionsNoBordersAndSeparators = Options{ DrawBorder: false, SeparateColumns: false, SeparateFooter: false, SeparateHeader: false, SeparateRows: false, } )
var ( // TitleOptionsDefault defines sensible title options - basically NONE. TitleOptionsDefault = TitleOptions{} // TitleOptionsBright renders Bright Bold text on Dark background. TitleOptionsBright = TitleOptionsBlackOnCyan // TitleOptionsDark renders Dark Bold text on Bright background. TitleOptionsDark = TitleOptionsCyanOnBlack // TitleOptionsBlackOnBlue renders Black text on Blue background. TitleOptionsBlackOnBlue = TitleOptions{ Colors: append(ColorOptionsBlackOnBlueWhite.Header, text.Bold), } // TitleOptionsBlackOnCyan renders Black Bold text on Cyan background. TitleOptionsBlackOnCyan = TitleOptions{ Colors: append(ColorOptionsBlackOnCyanWhite.Header, text.Bold), } // TitleOptionsBlackOnGreen renders Black Bold text onGreen background. TitleOptionsBlackOnGreen = TitleOptions{ Colors: append(ColorOptionsBlackOnGreenWhite.Header, text.Bold), } // TitleOptionsBlackOnMagenta renders Black Bold text on Magenta background. TitleOptionsBlackOnMagenta = TitleOptions{ Colors: append(ColorOptionsBlackOnMagentaWhite.Header, text.Bold), } // TitleOptionsBlackOnRed renders Black Bold text on Red background. TitleOptionsBlackOnRed = TitleOptions{ Colors: append(ColorOptionsBlackOnRedWhite.Header, text.Bold), } // TitleOptionsBlackOnYellow renders Black Bold text on Yellow background. TitleOptionsBlackOnYellow = TitleOptions{ Colors: append(ColorOptionsBlackOnYellowWhite.Header, text.Bold), } // TitleOptionsBlueOnBlack renders Blue Bold text on Black background. TitleOptionsBlueOnBlack = TitleOptions{ Colors: append(ColorOptionsBlueWhiteOnBlack.Header, text.Bold), } // TitleOptionsCyanOnBlack renders Cyan Bold text on Black background. TitleOptionsCyanOnBlack = TitleOptions{ Colors: append(ColorOptionsCyanWhiteOnBlack.Header, text.Bold), } // TitleOptionsGreenOnBlack renders Green Bold text on Black background. TitleOptionsGreenOnBlack = TitleOptions{ Colors: append(ColorOptionsGreenWhiteOnBlack.Header, text.Bold), } // TitleOptionsMagentaOnBlack renders Magenta Bold text on Black background. TitleOptionsMagentaOnBlack = TitleOptions{ Colors: append(ColorOptionsMagentaWhiteOnBlack.Header, text.Bold), } // TitleOptionsRedOnBlack renders Red Bold text on Black background. TitleOptionsRedOnBlack = TitleOptions{ Colors: append(ColorOptionsRedWhiteOnBlack.Header, text.Bold), } // TitleOptionsYellowOnBlack renders Yellow Bold text on Black background. TitleOptionsYellowOnBlack = TitleOptions{ Colors: append(ColorOptionsYellowWhiteOnBlack.Header, text.Bold), } )
var ( // FormatOptionsDefault defines sensible formatting options. FormatOptionsDefault = FormatOptions{ Footer: text.FormatUpper, Header: text.FormatUpper, Row: text.FormatDefault, } )
Functions ¶
func AutoIndexColumnID ¶
AutoIndexColumnID returns a unique Column ID/Name for the given Column Number. The functionality is similar to what you get in an Excel spreadsheet w.r.t. the Column ID/Name.
Example ¶
fmt.Printf("AutoIndexColumnID( 0): \"%s\"\n", AutoIndexColumnID(0)) fmt.Printf("AutoIndexColumnID( 1): \"%s\"\n", AutoIndexColumnID(1)) fmt.Printf("AutoIndexColumnID( 2): \"%s\"\n", AutoIndexColumnID(2)) fmt.Printf("AutoIndexColumnID( 25): \"%s\"\n", AutoIndexColumnID(25)) fmt.Printf("AutoIndexColumnID( 26): \"%s\"\n", AutoIndexColumnID(26)) fmt.Printf("AutoIndexColumnID( 702): \"%s\"\n", AutoIndexColumnID(702)) fmt.Printf("AutoIndexColumnID(18278): \"%s\"\n", AutoIndexColumnID(18278))
Output: AutoIndexColumnID( 0): "A" AutoIndexColumnID( 1): "B" AutoIndexColumnID( 2): "C" AutoIndexColumnID( 25): "Z" AutoIndexColumnID( 26): "AA" AutoIndexColumnID( 702): "AAA" AutoIndexColumnID(18278): "AAAA"
Types ¶
type BoxStyle ¶
type BoxStyle struct { BottomLeft string BottomRight string BottomSeparator string Left string LeftSeparator string MiddleHorizontal string MiddleSeparator string MiddleVertical string PaddingLeft string PaddingRight string PageSeparator string Right string RightSeparator string TopLeft string TopRight string TopSeparator string UnfinishedRow string }
BoxStyle defines the characters/strings to use to render the borders and separators for the Table.
type ColorOptions ¶
type ColorOptions struct { IndexColumn text.Colors // index-column colors (row #, etc.) Header text.Colors // header row(s) colors Row text.Colors // regular row(s) colors RowAlternate text.Colors // regular row(s) colors for the even-numbered rows }
ColorOptions defines the ANSI colors to use for parts of the Table.
type ColumnConfig ¶
type ColumnConfig struct { // Name is the name of the Column as it appears in the first Header row. // If a Header is not provided, or the name is not found in the header, this // will not work. Name string // Number is the Column # from left. When specified, it overrides the Name // property. If you know the exact Column number, use this instead of Name. Number int // Align defines the horizontal alignment Align text.Align AlignFooter text.Align // AlignHeader defines the horizontal alignment of Header rows AlignHeader text.Align // Colors defines the colors to be used on the column Colors text.Colors ColorsFooter text.Colors // ColorsHeader defines the colors to be used on the column in Header rows ColorsHeader text.Colors // Transformer is a custom-function that changes the way the value gets // rendered to the console. Refer to text/transformer.go for ready-to-use // Transformer functions. Transformer text.Transformer TransformerFooter text.Transformer // TransformerHeader is like Transformer but for Header rows TransformerHeader text.Transformer // VAlign defines the vertical alignment VAlign text.VAlign VAlignFooter text.VAlign // VAlignHeader defines the vertical alignment in Header rows VAlignHeader text.VAlign // WidthMin defines the minimum character length of the column WidthMin int // WidthMax defines the maximum character length of the column WidthMax int }
ColumnConfig contains configurations that determine and modify the way the contents of the column get rendered.
type FormatOptions ¶
type FormatOptions struct { Header text.Format // header row(s) text format Row text.Format // (data) row(s) text format }
FormatOptions defines the text-formatting to perform on parts of the Table.
type Options ¶
type Options struct { // DrawBorder enables or disables drawing the border around the Table. // Example of a table where it is disabled: // # │ FIRST NAME │ LAST NAME │ SALARY │ // ─────┼────────────┼───────────┼────────┼───────────────────────────── // 1 │ Arya │ Stark │ 3000 │ // 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! // 300 │ Tyrion │ Lannister │ 5000 │ // ─────┼────────────┼───────────┼────────┼───────────────────────────── // │ │ TOTAL │ 10000 │ DrawBorder bool // SeparateColumns enables or disable drawing border between columns. // Example of a table where it is disabled: // ┌─────────────────────────────────────────────────────────────────┐ // │ # FIRST NAME LAST NAME SALARY │ // ├─────────────────────────────────────────────────────────────────┤ // │ 1 Arya Stark 3000 │ // │ 20 Jon Snow 2000 You know nothing, Jon Snow! │ // │ 300 Tyrion Lannister 5000 │ // │ TOTAL 10000 │ // └─────────────────────────────────────────────────────────────────┘ SeparateColumns bool // the rows. Example of a table where it is disabled: // ┌─────┬────────────┬───────────┬────────┬─────────────────────────────┐ // │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 1 │ Arya │ Stark │ 3000 │ │ // │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ // │ 300 │ Tyrion │ Lannister │ 5000 │ │ // │ │ │ TOTAL │ 10000 │ │ // └─────┴────────────┴───────────┴────────┴─────────────────────────────┘ SeparateFooter bool // SeparateHeader enables or disable drawing border between the header and // the rows. Example of a table where it is disabled: // ┌─────┬────────────┬───────────┬────────┬─────────────────────────────┐ // │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ // │ 1 │ Arya │ Stark │ 3000 │ │ // │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ // │ 300 │ Tyrion │ Lannister │ 5000 │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ │ │ TOTAL │ 10000 │ │ // └─────┴────────────┴───────────┴────────┴─────────────────────────────┘ SeparateHeader bool // SeparateRows enables or disables drawing separators between each row. // Example of a table where it is enabled: // ┌─────┬────────────┬───────────┬────────┬─────────────────────────────┐ // │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 1 │ Arya │ Stark │ 3000 │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ 300 │ Tyrion │ Lannister │ 5000 │ │ // ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ // │ │ │ TOTAL │ 10000 │ │ // └─────┴────────────┴───────────┴────────┴─────────────────────────────┘ SeparateRows bool }
Options defines the global options that determine how the Table is rendered.
type RowPainter ¶
RowPainter is a custom function that takes a Row as input and returns the text.Colors{} to use on the entire row
type SortBy ¶
type SortBy struct { // Name is the name of the Column as it appears in the first Header row. // If a Header is not provided, or the name is not found in the header, this // will not work. Name string // Number is the Column # from left. When specified, it overrides the Name // property. If you know the exact Column number, use this instead of Name. Number int // Mode tells the Writer how to Sort. Asc/Dsc/etc. Mode SortMode }
SortBy defines What to sort (Column Name or Number), and How to sort (Mode).
type SortMode ¶
type SortMode int
SortMode defines How to sort.
const ( // Asc sorts the column in Ascending order alphabetically. Asc SortMode = iota // AscNumeric sorts the column in Ascending order numerically. AscNumeric // Dsc sorts the column in Descending order alphabetically. Dsc // DscNumeric sorts the column in Descending order numerically. DscNumeric )
type Style ¶
type Style struct { Name string // name of the Style Box BoxStyle // characters to use for the boxes Color ColorOptions // colors to use for the rows and columns Format FormatOptions // formatting options for the rows and columns Options Options // misc. options for the table Title TitleOptions // formation options for the title text }
Style declares how to render the Table and provides very fine-grained control on how the Table gets rendered on the Console.
type Table ¶
type Table struct {
// contains filtered or unexported fields
}
Table helps print a 2-dimensional array in a human readable pretty-table.
func (*Table) AppendFooter ¶
AppendFooter appends the row to the List of footers to render.
func (*Table) AppendHeader ¶
AppendHeader appends the row to the List of headers to render.
func (*Table) AppendRows ¶
AppendRows appends the rows to the List of rows to render.
func (*Table) Render ¶
Render renders the Table in a human-readable "pretty" format. Example:
┌─────┬────────────┬───────────┬────────┬─────────────────────────────┐ │ # │ FIRST NAME │ LAST NAME │ SALARY │ │ ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ │ 1 │ Arya │ Stark │ 3000 │ │ │ 20 │ Jon │ Snow │ 2000 │ You know nothing, Jon Snow! │ │ 300 │ Tyrion │ Lannister │ 5000 │ │ ├─────┼────────────┼───────────┼────────┼─────────────────────────────┤ │ │ │ TOTAL │ 10000 │ │ └─────┴────────────┴───────────┴────────┴─────────────────────────────┘
func (*Table) RenderCSV ¶
RenderCSV renders the Table in CSV format. Example:
#,First Name,Last Name,Salary, 1,Arya,Stark,3000, 20,Jon,Snow,2000,"You know nothing\, Jon Snow!" 300,Tyrion,Lannister,5000, ,,Total,10000,
func (*Table) RenderHTML ¶
RenderHTML renders the Table in HTML format. Example:
<table class="go-pretty-table"> <thead> <tr> <th align="right">#</th> <th>First Name</th> <th>Last Name</th> <th align="right">Salary</th> <th> </th> </tr> </thead> <tbody> <tr> <td align="right">1</td> <td>Arya</td> <td>Stark</td> <td align="right">3000</td> <td> </td> </tr> <tr> <td align="right">20</td> <td>Jon</td> <td>Snow</td> <td align="right">2000</td> <td>You know nothing, Jon Snow!</td> </tr> <tr> <td align="right">300</td> <td>Tyrion</td> <td>Lannister</td> <td align="right">5000</td> <td> </td> </tr> </tbody> <tfoot> <tr> <td align="right"> </td> <td> </td> <td>Total</td> <td align="right">10000</td> <td> </td> </tr> </tfoot> </table>
func (*Table) RenderMarkdown ¶
RenderMarkdown renders the Table in Markdown format. Example:
| # | First Name | Last Name | Salary | | | ---:| --- | --- | ---:| --- | | 1 | Arya | Stark | 3000 | | | 20 | Jon | Snow | 2000 | You know nothing, Jon Snow! | | 300 | Tyrion | Lannister | 5000 | | | | | Total | 10000 | |
func (*Table) SetAlignFooter
deprecated
func (*Table) SetAlignHeader
deprecated
func (*Table) SetAllowedColumnLengths
deprecated
SetAllowedColumnLengths sets the maximum allowed length for each column in all the rows. Columns with content longer than the allowed limit will be wrapped to fit the length. Length has to be a positive value to take effect.
Deprecated: Use SetColumnConfigs instead.
func (*Table) SetAllowedRowLength ¶
SetAllowedRowLength sets the maximum allowed length or a row (or line of output) when rendered as a table. Rows that are longer than this limit will be "snipped" to the length. Length has to be a positive value to take effect.
func (*Table) SetAutoIndex ¶
SetAutoIndex adds a generated header with columns such as "A", "B", "C", etc. and a leading column with the row number similar to what you'd see on any spreadsheet application. NOTE: Appending a Header will void this functionality.
func (*Table) SetCaption ¶
SetCaption sets the text to be rendered just below the table. This will not show up when the Table is rendered as a CSV.
func (*Table) SetColorsFooter
deprecated
func (*Table) SetColorsHeader
deprecated
func (*Table) SetColumnConfigs ¶
func (t *Table) SetColumnConfigs(configs []ColumnConfig)
SetColumnConfigs sets the configs for each Column.
func (*Table) SetHTMLCSSClass ¶
SetHTMLCSSClass sets the the HTML CSS Class to use on the <table> node when rendering the Table in HTML format.
func (*Table) SetIndexColumn ¶
SetIndexColumn sets the given Column # as the column that has the row "Number". Valid values range from 1 to N. Note that this is not 0-indexed.
func (*Table) SetOutputMirror ¶
SetOutputMirror sets an io.Writer for all the Render functions to "Write" to in addition to returning a string.
func (*Table) SetPageSize ¶
SetPageSize sets the maximum number of lines to render before rendering the header rows again. This can be useful when dealing with tables containing a long list of rows that can span pages. Please note that the pagination logic will not consider Header/Footer lines for paging.
func (*Table) SetRowPainter ¶
func (t *Table) SetRowPainter(painter RowPainter)
SetRowPainter sets the RowPainter function which determines the colors to use on a row. Before rendering, this function is invoked on all rows and the color of each row is determined. This color takes precedence over other ways to set color (ColumnConfig.Color*, SetColor*()).
func (*Table) SetVAlignFooter
deprecated
func (*Table) SetVAlignHeader
deprecated
type TitleOptions ¶
TitleOptions defines the way the title text is to be rendered.
type Writer ¶
type Writer interface { AppendHeader(row Row) AppendRow(row Row) AppendRows(rows []Row) Length() int Render() string RenderCSV() string RenderHTML() string RenderMarkdown() string SetAllowedRowLength(length int) SetAutoIndex(autoIndex bool) SetCaption(format string, a ...interface{}) SetColumnConfigs(configs []ColumnConfig) SetHTMLCSSClass(cssClass string) SetIndexColumn(colNum int) SetOutputMirror(mirror io.Writer) SetPageSize(numLines int) SetRowPainter(painter RowPainter) SetStyle(style Style) SetTitle(format string, a ...interface{}) SortBy(sortBy []SortBy) Style() *Style // deprecated; use SetColumnConfigs instead SetAlign(align []text.Align) SetAlignFooter(align []text.Align) // deprecated; use SetColumnConfigs instead SetAlignHeader(align []text.Align) // deprecated; use SetColumnConfigs instead SetAllowedColumnLengths(lengths []int) // deprecated; use SetColumnConfigs instead SetColors(colors []text.Colors) SetColorsFooter(colors []text.Colors) // deprecated; use SetColumnConfigs instead SetColorsHeader(colors []text.Colors) // deprecated; use SetColumnConfigs instead SetVAlign(vAlign []text.VAlign) SetVAlignFooter(vAlign []text.VAlign) // deprecated; use SetColumnConfigs instead SetVAlignHeader(vAlign []text.VAlign) }
Writer declares the interfaces that can be used to setup and render a table.