package tablewriter
import "github.com/olekukonko/tablewriter"
Create & Generate text based table
Code:
Output:Example (Autowrap)¶
{
var multiline = `A multiline
string with some lines being really long.`
const (
testRow = iota
testHeader
testFooter
testFooter2
)
for mode := testRow; mode <= testFooter2; mode++ {
for _, autoFmt := range []bool{false, true} {
if mode == testRow && autoFmt {
// Nothing special to test, skip
continue
}
for _, autoWrap := range []bool{false, true} {
for _, reflow := range []bool{false, true} {
if !autoWrap && reflow {
// Invalid configuration, skip
continue
}
fmt.Println("mode", mode, "autoFmt", autoFmt, "autoWrap", autoWrap, "reflow", reflow)
t := NewWriter(os.Stdout)
t.SetAutoFormatHeaders(autoFmt)
t.SetAutoWrapText(autoWrap)
t.SetReflowDuringAutoWrap(reflow)
if mode == testHeader {
t.SetHeader([]string{"woo", multiline})
} else {
t.SetHeader([]string{"woo", "waa"})
}
if mode == testRow {
t.Append([]string{"woo", multiline})
} else {
t.Append([]string{"woo", "waa"})
}
if mode == testFooter {
t.SetFooter([]string{"woo", multiline})
} else if mode == testFooter2 {
t.SetFooter([]string{"", multiline})
} else {
t.SetFooter([]string{"woo", "waa"})
}
t.Render()
}
}
}
fmt.Println()
}
// Output:
// mode 0 autoFmt false autoWrap false reflow false
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | woo | A multiline |
// | | string with some lines being really long. |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// mode 0 autoFmt false autoWrap true reflow false
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | A multiline |
// | | |
// | | string with some lines being |
// | | really long. |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// mode 0 autoFmt false autoWrap true reflow true
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | A multiline string with some |
// | | lines being really long. |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
//
// mode 1 autoFmt false autoWrap false reflow false
// +-----+-------------------------------------------+
// | woo | A multiline |
// | | string with some lines being really long. |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// mode 1 autoFmt false autoWrap true reflow false
// +-----+--------------------------------+
// | woo | A multiline |
// | | |
// | | string with some lines being |
// | | really long. |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// mode 1 autoFmt false autoWrap true reflow true
// +-----+--------------------------------+
// | woo | A multiline string with some |
// | | lines being really long. |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// mode 1 autoFmt true autoWrap false reflow false
// +-----+-------------------------------------------+
// | WOO | A MULTILINE |
// | | STRING WITH SOME LINES BEING REALLY LONG |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | WOO | WAA |
// +-----+-------------------------------------------+
// mode 1 autoFmt true autoWrap true reflow false
// +-----+--------------------------------+
// | WOO | A MULTILINE |
// | | |
// | | STRING WITH SOME LINES BEING |
// | | REALLY LONG |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | WOO | WAA |
// +-----+--------------------------------+
// mode 1 autoFmt true autoWrap true reflow true
// +-----+--------------------------------+
// | WOO | A MULTILINE STRING WITH SOME |
// | | LINES BEING REALLY LONG |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | WOO | WAA |
// +-----+--------------------------------+
//
// mode 2 autoFmt false autoWrap false reflow false
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | woo | A multiline |
// | | string with some lines being really long. |
// +-----+-------------------------------------------+
// mode 2 autoFmt false autoWrap true reflow false
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | A multiline |
// | | |
// | | string with some lines being |
// | | really long. |
// +-----+--------------------------------+
// mode 2 autoFmt false autoWrap true reflow true
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | A multiline string with some |
// | | lines being really long. |
// +-----+--------------------------------+
// mode 2 autoFmt true autoWrap false reflow false
// +-----+-------------------------------------------+
// | WOO | WAA |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | WOO | A MULTILINE |
// | | STRING WITH SOME LINES BEING REALLY LONG |
// +-----+-------------------------------------------+
// mode 2 autoFmt true autoWrap true reflow false
// +-----+--------------------------------+
// | WOO | WAA |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | WOO | A MULTILINE |
// | | |
// | | STRING WITH SOME LINES BEING |
// | | REALLY LONG |
// +-----+--------------------------------+
// mode 2 autoFmt true autoWrap true reflow true
// +-----+--------------------------------+
// | WOO | WAA |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | WOO | A MULTILINE STRING WITH SOME |
// | | LINES BEING REALLY LONG |
// +-----+--------------------------------+
//
// mode 3 autoFmt false autoWrap false reflow false
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | A multiline |
// | string with some lines being really long. |
// +-----+-------------------------------------------+
// mode 3 autoFmt false autoWrap true reflow false
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | A multiline |
// | |
// | string with some lines being |
// | really long. |
// +-----+--------------------------------+
// mode 3 autoFmt false autoWrap true reflow true
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | A multiline string with some |
// | lines being really long. |
// +-----+--------------------------------+
// mode 3 autoFmt true autoWrap false reflow false
// +-----+-------------------------------------------+
// | WOO | WAA |
// +-----+-------------------------------------------+
// | woo | waa |
// +-----+-------------------------------------------+
// | A MULTILINE |
// | STRING WITH SOME LINES BEING REALLY LONG |
// +-----+-------------------------------------------+
// mode 3 autoFmt true autoWrap true reflow false
// +-----+--------------------------------+
// | WOO | WAA |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | A MULTILINE |
// | |
// | STRING WITH SOME LINES BEING |
// | REALLY LONG |
// +-----+--------------------------------+
// mode 3 autoFmt true autoWrap true reflow true
// +-----+--------------------------------+
// | WOO | WAA |
// +-----+--------------------------------+
// | woo | waa |
// +-----+--------------------------------+
// | A MULTILINE STRING WITH SOME |
// | LINES BEING REALLY LONG |
// +-----+--------------------------------+
}
mode 0 autoFmt false autoWrap false reflow false
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| woo | A multiline |
| | string with some lines being really long. |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
mode 0 autoFmt false autoWrap true reflow false
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | A multiline |
| | |
| | string with some lines being |
| | really long. |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
mode 0 autoFmt false autoWrap true reflow true
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | A multiline string with some |
| | lines being really long. |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
mode 1 autoFmt false autoWrap false reflow false
+-----+-------------------------------------------+
| woo | A multiline |
| | string with some lines being really long. |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
mode 1 autoFmt false autoWrap true reflow false
+-----+--------------------------------+
| woo | A multiline |
| | |
| | string with some lines being |
| | really long. |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
mode 1 autoFmt false autoWrap true reflow true
+-----+--------------------------------+
| woo | A multiline string with some |
| | lines being really long. |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
mode 1 autoFmt true autoWrap false reflow false
+-----+-------------------------------------------+
| WOO | A MULTILINE |
| | STRING WITH SOME LINES BEING REALLY LONG |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| WOO | WAA |
+-----+-------------------------------------------+
mode 1 autoFmt true autoWrap true reflow false
+-----+--------------------------------+
| WOO | A MULTILINE |
| | |
| | STRING WITH SOME LINES BEING |
| | REALLY LONG |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| WOO | WAA |
+-----+--------------------------------+
mode 1 autoFmt true autoWrap true reflow true
+-----+--------------------------------+
| WOO | A MULTILINE STRING WITH SOME |
| | LINES BEING REALLY LONG |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| WOO | WAA |
+-----+--------------------------------+
mode 2 autoFmt false autoWrap false reflow false
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| woo | A multiline |
| | string with some lines being really long. |
+-----+-------------------------------------------+
mode 2 autoFmt false autoWrap true reflow false
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | A multiline |
| | |
| | string with some lines being |
| | really long. |
+-----+--------------------------------+
mode 2 autoFmt false autoWrap true reflow true
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | A multiline string with some |
| | lines being really long. |
+-----+--------------------------------+
mode 2 autoFmt true autoWrap false reflow false
+-----+-------------------------------------------+
| WOO | WAA |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| WOO | A MULTILINE |
| | STRING WITH SOME LINES BEING REALLY LONG |
+-----+-------------------------------------------+
mode 2 autoFmt true autoWrap true reflow false
+-----+--------------------------------+
| WOO | WAA |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| WOO | A MULTILINE |
| | |
| | STRING WITH SOME LINES BEING |
| | REALLY LONG |
+-----+--------------------------------+
mode 2 autoFmt true autoWrap true reflow true
+-----+--------------------------------+
| WOO | WAA |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| WOO | A MULTILINE STRING WITH SOME |
| | LINES BEING REALLY LONG |
+-----+--------------------------------+
mode 3 autoFmt false autoWrap false reflow false
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| A multiline |
| string with some lines being really long. |
+-----+-------------------------------------------+
mode 3 autoFmt false autoWrap true reflow false
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| A multiline |
| |
| string with some lines being |
| really long. |
+-----+--------------------------------+
mode 3 autoFmt false autoWrap true reflow true
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| A multiline string with some |
| lines being really long. |
+-----+--------------------------------+
mode 3 autoFmt true autoWrap false reflow false
+-----+-------------------------------------------+
| WOO | WAA |
+-----+-------------------------------------------+
| woo | waa |
+-----+-------------------------------------------+
| A MULTILINE |
| STRING WITH SOME LINES BEING REALLY LONG |
+-----+-------------------------------------------+
mode 3 autoFmt true autoWrap true reflow false
+-----+--------------------------------+
| WOO | WAA |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| A MULTILINE |
| |
| STRING WITH SOME LINES BEING |
| REALLY LONG |
+-----+--------------------------------+
mode 3 autoFmt true autoWrap true reflow true
+-----+--------------------------------+
| WOO | WAA |
+-----+--------------------------------+
| woo | waa |
+-----+--------------------------------+
| A MULTILINE STRING WITH SOME |
| LINES BEING REALLY LONG |
+-----+--------------------------------+
Index ¶
- Constants
- func Color(colors ...int) []int
- func ConditionString(cond bool, valid, inValid string) string
- func DisplayWidth(str string) int
- func Pad(s, pad string, width int) string
- func PadLeft(s, pad string, width int) string
- func PadRight(s, pad string, width int) string
- func Title(name string) string
- func WrapString(s string, lim int) ([]string, int)
- func WrapWords(words []string, spc, lim, pen int) [][]string
- type Border
- type Colors
- type Table
- func NewCSV(writer io.Writer, fileName string, hasHeader bool) (*Table, error)
- func NewCSVReader(writer io.Writer, csvReader *csv.Reader, hasHeader bool) (*Table, error)
- func NewWriter(writer io.Writer) *Table
- func (t *Table) Append(row []string)
- func (t *Table) AppendBulk(rows [][]string)
- func (t *Table) ClearFooter()
- func (t *Table) ClearRows()
- func (t *Table) NumLines() int
- func (t *Table) Render()
- func (t *Table) SetAlignment(align int)
- func (t *Table) SetAutoFormatHeaders(auto bool)
- func (t *Table) SetAutoMergeCells(auto bool)
- func (t *Table) SetAutoWrapText(auto bool)
- func (t *Table) SetBorder(border bool)
- func (t *Table) SetBorders(border Border)
- func (t *Table) SetCaption(caption bool, captionText ...string)
- func (t *Table) SetCenterSeparator(sep string)
- func (t *Table) SetColMinWidth(column int, width int)
- func (t *Table) SetColWidth(width int)
- func (t *Table) SetColumnAlignment(keys []int)
- func (t *Table) SetColumnColor(colors ...Colors)
- func (t *Table) SetColumnSeparator(sep string)
- func (t *Table) SetFooter(keys []string)
- func (t *Table) SetFooterAlignment(fAlign int)
- func (t *Table) SetFooterColor(colors ...Colors)
- func (t *Table) SetHeader(keys []string)
- func (t *Table) SetHeaderAlignment(hAlign int)
- func (t *Table) SetHeaderColor(colors ...Colors)
- func (t *Table) SetHeaderLine(line bool)
- func (t *Table) SetNewLine(nl string)
- func (t *Table) SetReflowDuringAutoWrap(auto bool)
- func (t *Table) SetRowLine(line bool)
- func (t *Table) SetRowSeparator(sep string)
Examples ¶
Constants ¶
const ( CENTER = "+" ROW = "-" COLUMN = "|" SPACE = " " NEWLINE = "\n" )
const ( ALIGN_DEFAULT = iota ALIGN_CENTER ALIGN_RIGHT ALIGN_LEFT )
const ( BgBlackColor int = iota + 40 BgRedColor BgGreenColor BgYellowColor BgBlueColor BgMagentaColor BgCyanColor BgWhiteColor )
const ( FgBlackColor int = iota + 30 FgRedColor FgGreenColor FgYellowColor FgBlueColor FgMagentaColor FgCyanColor FgWhiteColor )
const ( BgHiBlackColor int = iota + 100 BgHiRedColor BgHiGreenColor BgHiYellowColor BgHiBlueColor BgHiMagentaColor BgHiCyanColor BgHiWhiteColor )
const ( FgHiBlackColor int = iota + 90 FgHiRedColor FgHiGreenColor FgHiYellowColor FgHiBlueColor FgHiMagentaColor FgHiCyanColor FgHiWhiteColor )
const ( Normal = 0 Bold = 1 UnderlineSingle = 4 Italic )
const ESC = "\033"
const (
MAX_ROW_WIDTH = 30
)
const SEP = ";"
Functions ¶
func Color ¶
func ConditionString ¶
Simple Condition for string Returns value based on condition
func DisplayWidth ¶
func Pad ¶
Pad String Attempts to play string in the center
func PadLeft ¶
Pad String Left position This would pace string at the right side fo the screen
func PadRight ¶
Pad String Right position This would pace string at the left side fo the screen
func Title ¶
Format Table Header Replace _ , . and spaces
func WrapString ¶
Wrap wraps s into a paragraph of lines of length lim, with minimal raggedness.
func WrapWords ¶
WrapWords is the low-level line-breaking algorithm, useful if you need more control over the details of the text wrapping process. For most uses, WrapString will be sufficient and more convenient.
WrapWords splits a list of words into lines with minimal "raggedness", treating each rune as one unit, accounting for spc units between adjacent words on each line, and attempting to limit lines to lim units. Raggedness is the total error over all lines, where error is the square of the difference of the length of the line and lim. Too-long lines (which only happen when a single word is longer than lim units) have pen penalty units added to the error.
Types ¶
type Border ¶
type Colors ¶
type Colors []int
type Table ¶
type Table struct {
// contains filtered or unexported fields
}
func NewCSV ¶
Start A new table by importing from a CSV file Takes io.Writer and csv File name
func NewCSVReader ¶
Start a New Table Writer with csv.Reader
This enables customisation such as reader.Comma = ';' See http://golang.org/src/pkg/encoding/csv/reader.go?s=3213:3671#L94
func NewWriter ¶
Start New Table Take io.Writer Directly
func (*Table) Append ¶
Append row to table
func (*Table) AppendBulk ¶
Allow Support for Bulk Append Eliminates repeated for loops
func (*Table) ClearFooter ¶
func (t *Table) ClearFooter()
Clear footer
func (*Table) ClearRows ¶
func (t *Table) ClearRows()
Clear rows
func (*Table) NumLines ¶
NumLines to get the number of lines
func (*Table) Render ¶
func (t *Table) Render()
Render table output
func (*Table) SetAlignment ¶
Set Table Alignment
func (*Table) SetAutoFormatHeaders ¶
Turn header autoformatting on/off. Default is on (true).
func (*Table) SetAutoMergeCells ¶
Set Auto Merge Cells This would enable / disable the merge of cells with identical values
func (*Table) SetAutoWrapText ¶
Turn automatic multiline text adjustment on/off. Default is on (true).
func (*Table) SetBorder ¶
Set Table Border This would enable / disable line around the table
func (*Table) SetBorders ¶
func (*Table) SetCaption ¶
Set table Caption
func (*Table) SetCenterSeparator ¶
Set the center Separator
func (*Table) SetColMinWidth ¶
Set the minimal width for a column
func (*Table) SetColWidth ¶
Set the Default column width
func (*Table) SetColumnAlignment ¶
func (*Table) SetColumnColor ¶
Adding column colors (ANSI codes)
func (*Table) SetColumnSeparator ¶
Set the Column Separator
func (*Table) SetFooter ¶
Set table Footer
func (*Table) SetFooterAlignment ¶
Set Footer Alignment
func (*Table) SetFooterColor ¶
Adding column colors (ANSI codes)
func (*Table) SetHeader ¶
Set table header
func (*Table) SetHeaderAlignment ¶
Set Header Alignment
func (*Table) SetHeaderColor ¶
Adding header colors (ANSI codes)
func (*Table) SetHeaderLine ¶
Set Header Line This would enable / disable a line after the header
func (*Table) SetNewLine ¶
Set New Line
func (*Table) SetReflowDuringAutoWrap ¶
Turn automatic reflowing of multiline text when rewrapping. Default is on (true).
func (*Table) SetRowLine ¶
Set Row Line This would enable / disable a line on each row of the table
func (*Table) SetRowSeparator ¶
Set the Row Separator
Source Files ¶
csv.go table.go table_with_color.go util.go wrap.go
Directories ¶
Path | Synopsis |
---|---|
csv2table |
- Version
- v0.0.1
- Published
- Oct 26, 2018
- Platform
- windows/amd64
- Imports
- 10 packages
- Last checked
- now –
Tools for package owners.