Tables
Building Tables
Section titled “Building Tables”import "github.com/larsartmann/go-output"
data := output.NewTable([]string{"Name", "Status", "Score"})data.AddRow([]string{"Alpha", "pass", "95"})data.AddRow([]string{"Beta", "pass", "87"})data.AddRow([]string{"Gamma", "fail", "42"})data.SetFooter([]string{"Total", "2/3", "224"})CQRS Builder API
Section titled “CQRS Builder API”tbl := output.NewTableBuilder(). SetHeaders("Name", "Status"). AddRow("Compile", "done"). AddRow("Test", "running"). Build()Build() copies all slices, so subsequent builder mutations don’t affect previously built tables.
Rendering
Section titled “Rendering”Root module (no extra deps)
Section titled “Root module (no extra deps)”// Markdownmd := markdown.NewMarkdownTable()md.SetHeaders(data.GetHeaders())for _, row := range data.GetRows() { md.AddRow(row) }out, _ := md.Render()Serialization formats
Section titled “Serialization formats”// JSONjtr := serialization.NewJSONTableRenderer()jtr.SetData(data)out, _ := jtr.Render()// [{"Name":"Alpha","Status":"pass","Score":"95"}, ...]Delimited formats
Section titled “Delimited formats”// CSV streamingcsv := delimited.NewCSVWriter(os.Stdout)_ = csv.WriteHeader(data.GetHeaders())for _, row := range data.GetRows() { _ = csv.WriteRow(row) }csv.Flush()Terminal table (lipgloss)
Section titled “Terminal table (lipgloss)”tbl := table.New(table.WithColorMode(output.ColorModeAuto))tbl.SetHeaders("Name", "Status")tbl.AddRow("Alpha", "pass")out, _ := tbl.Render()HTML with footer
Section titled “HTML with footer”ht := markup.NewHTMLRenderer()ht.SetData(data)out, _ := ht.Render()// Renders <table> with <tfoot> for the footer rowFooter Row Support
Section titled “Footer Row Support”The footer row is rendered differently per format:
| Format | Footer |
|---|---|
table, markdown |
Styled/bold footer row |
csv, tsv |
Appended as last data row |
html |
<tfoot> section |
xml |
<footer> element |
asciidoc |
Footer row cells |
json, yaml, toml, jsonl |
Skipped (data serialization) |
tree, d2, mermaid, dot |
Skipped (non-tabular) |
Cross-Shape Conversion
Section titled “Cross-Shape Conversion”// Table -> Graphdot := graph.NewDOTFromTable(data)mmd := graph.NewMermaidFromTable(data)plantuml := plantuml.NewPlantUMLFromTable(data)d2Diagram := d2.NewD2FromTable(data)
// Table -> Treetree := tree.TreeRendererFromTable(data)