Documentation
¶
Overview ¶
Package output provides a reusable Go library for CLI applications offering consistent output formatting across 16 formats (Table, JSON, CSV, TSV, Markdown, XML, YAML, HTML, Tree, D2, Mermaid, DOT, JSONL, AsciiDoc, TOML, PlantUML) with type-safe enum-based configuration and a Shape capability matrix.
Quick Start ¶
Use TableData as the single source of truth for tabular data:
data := output.NewTableData([]string{"Name", "Status"})
data.AddRow([]string{"Project A", "Active"})
data.Footer = []string{"Total", "1"}
Render to any supported format:
var buf bytes.Buffer
_ = output.RenderTableData(data, output.FormatMarkdown, output.RenderOptions{Writer: &buf})
Architecture ¶
The library uses a multi-module workspace where each format family is an independent Go module. Users import only the formats they need:
import "github.com/larsartmann/go-output" // core + Markdown + Tree import "github.com/larsartmann/go-output/table" // terminal tables (optional) import "github.com/larsartmann/go-output/serialization" // JSON + YAML + TOML + JSONL (optional) import "github.com/larsartmann/go-output/delimited" // CSV + TSV (optional) import "github.com/larsartmann/go-output/markup" // XML + HTML + AsciiDoc (optional) import "github.com/larsartmann/go-output/d2" // D2 diagrams (optional) import "github.com/larsartmann/go-output/graph" // DOT + Mermaid (optional) import "github.com/larsartmann/go-output/plantuml" // PlantUML diagrams (optional)
The root module has ZERO imports from sub-modules, ensuring users get zero transitive dependencies from formats they don't use.
Index ¶
- Variables
- func AddTreeNodes(a NodeEdgeAppender, node *TreeNode, parentID string, idFunc TreeNodeIDFunc, ...)
- func DefaultGraphNodeLabel(header, cell string) string
- func MarshalJSONIndent(v any, prefix, indent string) ([]byte, error)
- func MustRender(r Renderer) string
- func NewBrandedID[Brand any](value string) id.ID[Brand, string]
- func RegisterFormatShapes(format Format, shapes ...Shape)
- func RegisterTableDataMarshaler(format Format, marshaler TableDataMarshaler)
- func RenderTableData(data *TableData, format Format, opts RenderOptions) error
- type ASCIITreeRenderer
- type Alignment
- type BrandedID
- type ColorMode
- type D2NodeID
- type D2NodeIDBrand
- type D2NodeLabel
- type D2NodeLabelBrand
- type EdgeStyle
- type Format
- type GraphEdge
- type GraphNode
- type GraphNodeID
- type GraphNodeIDBrand
- type GraphNodeLabel
- type GraphNodeLabelBrand
- type GraphNodeLabelFunc
- type GraphRenderer
- type GraphRendererState
- func (m *GraphRendererState) AddEdge(edge GraphEdge)
- func (m *GraphRendererState) AddNode(node GraphNode)
- func (m *GraphRendererState) AddRowEdges(data *TableData)
- func (m *GraphRendererState) Edges() []GraphEdge
- func (m *GraphRendererState) Nodes() []GraphNode
- func (m *GraphRendererState) SetEdges(edges []GraphEdge)
- func (m *GraphRendererState) SetNodes(nodes []GraphNode)
- func (m *GraphRendererState) SetNodesFromTableData(data *TableData, modifyNode func(i int, n *GraphNode))
- type GraphShape
- type GraphStyle
- type InvalidColorModeError
- type InvalidFormatError
- type InvalidGraphShapeError
- type InvalidShapeError
- type MarkdownTable
- func (m *MarkdownTable) AddRow(row []string) *MarkdownTable
- func (m *MarkdownTable) AsTableRenderer() TableRenderer
- func (m *MarkdownTable) Render() (string, error)
- func (m *MarkdownTable) SetAlign(col int, alignment Alignment) *MarkdownTable
- func (m *MarkdownTable) SetColorMode(mode ColorMode) *MarkdownTable
- func (m *MarkdownTable) SetFooter(footer []string) *MarkdownTable
- func (m *MarkdownTable) SetHeaders(headers []string) *MarkdownTable
- type NodeEdgeAppender
- type RenderOptions
- type Renderer
- type RowEdge
- type Shape
- type StreamingRenderer
- type TableData
- func (d *TableData) AddRow(row []string)
- func (d *TableData) ColCount() int
- func (d *TableData) CreateRowEdges() []RowEdge
- func (d *TableData) GetFooter() []string
- func (d *TableData) GetHeaders() []string
- func (d *TableData) GetRows() [][]string
- func (d *TableData) HasFooter() bool
- func (d *TableData) RowCount() int
- func (d *TableData) SetFooter(footer []string)
- func (d *TableData) ToMapSlice() []map[string]string
- func (d *TableData) Validate() error
- type TableDataMarshaler
- type TableDataStore
- type TableRenderer
- type TreeNode
- type TreeNodeID
- type TreeNodeIDBrand
- type TreeNodeIDFunc
- type TreeNodeLabel
- type TreeNodeLabelBrand
- type TreeOutputRenderer
- type UnsupportedFormatError
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var AllFormats = []Format{ FormatTable, FormatJSON, FormatCSV, FormatTSV, FormatMarkdown, FormatXML, FormatD2, FormatYAML, FormatHTML, FormatTree, FormatMermaid, FormatDOT, FormatJSONL, FormatAsciiDoc, FormatTOML, FormatPlantUML, }
AllFormats contains all valid output format values. Use this for testing AllowedValues or generating help text.
var AllShapes = []Shape{ ShapeTable, ShapeTree, ShapeGraph, }
AllShapes contains all valid data shape values.
Functions ¶
func AddTreeNodes ¶
func AddTreeNodes( a NodeEdgeAppender, node *TreeNode, parentID string, idFunc TreeNodeIDFunc, shape GraphShape, )
AddTreeNodes recursively adds tree nodes and edges to the provided appender.
func DefaultGraphNodeLabel ¶
DefaultGraphNodeLabel returns a label in the format "header: cell".
func MarshalJSONIndent ¶
MarshalJSONIndent encodes v to indented JSON.
func MustRender ¶
MustRender calls Render on the provided Renderer and panics if it returns an error. Useful for tests and examples where rendering failure is unexpected.
Example ¶
package main
import (
"fmt"
"github.com/larsartmann/go-output"
)
func main() {
data := output.NewTableData([]string{"Name"})
data.AddRow([]string{"Alice"})
m := output.NewMarkdownTable().SetColorMode(output.ColorModeNever)
m.SetHeaders(data.GetHeaders())
for _, row := range data.GetRows() {
m.AddRow(row)
}
result := output.MustRender(m)
fmt.Println(result != "")
}
Output: true
func NewBrandedID ¶
NewBrandedID creates a new branded ID from a string value.
func RegisterFormatShapes ¶ added in v0.7.0
RegisterFormatShapes registers the data shapes a format supports. Sub-modules call this from their init() to declare capabilities.
func RegisterTableDataMarshaler ¶ added in v0.6.0
func RegisterTableDataMarshaler(format Format, marshaler TableDataMarshaler)
RegisterTableDataMarshaler registers a marshaler for a format. Sub-modules call this from their init() to enable RenderTableData dispatch.
func RenderTableData ¶ added in v0.5.0
func RenderTableData(data *TableData, format Format, opts RenderOptions) error
RenderTableData renders TableData in the given format and writes to w (or os.Stdout). It supports all registered formats (csv, tsv, markdown, xml, yaml, html, jsonl, toml, asciidoc, tree) when respective sub-modules are imported.
D2, Mermaid, DOT, and Table return UnsupportedFormatError — those require direct constructor calls from their respective sub-modules.
Types ¶
type ASCIITreeRenderer ¶
type ASCIITreeRenderer struct {
// contains filtered or unexported fields
}
ASCIITreeRenderer implements the TreeOutputRenderer interface for ASCII tree output.
func NewASCIITreeRenderer ¶
func NewASCIITreeRenderer() *ASCIITreeRenderer
NewASCIITreeRenderer creates a new ASCIITreeRenderer.
func TreeRendererFromTableData ¶
func TreeRendererFromTableData(data *TableData) *ASCIITreeRenderer
TreeRendererFromTableData converts TableData to a tree using the first column as hierarchy.
func (*ASCIITreeRenderer) Render ¶
func (r *ASCIITreeRenderer) Render() (string, error)
Render returns the tree as a string.
func (*ASCIITreeRenderer) SetColorMode ¶ added in v0.6.0
func (r *ASCIITreeRenderer) SetColorMode(mode ColorMode)
SetColorMode sets the color mode for the tree renderer.
func (*ASCIITreeRenderer) SetRoot ¶
func (r *ASCIITreeRenderer) SetRoot(node *TreeNode)
SetRoot sets the root node of the tree.
type BrandedID ¶
BrandedID re-export for backward compatibility. Use id.ID[Brand, string] for new code.
type ColorMode ¶
type ColorMode string
ColorMode controls terminal color output.
Example ¶
package main
import (
"fmt"
"github.com/larsartmann/go-output"
)
func main() {
fmt.Println(output.ColorModeAuto.ShouldColor())
fmt.Println(output.ColorModeNever.ShouldColor())
}
Output: false false
const ( ColorModeAuto ColorMode = "auto" ColorModeAlways ColorMode = "always" ColorModeNever ColorMode = "never" )
Terminal color output modes.
func ParseColorMode ¶
ParseColorMode converts a string to ColorMode, returning an error if invalid.
func (ColorMode) AllowedValues ¶
AllowedValues returns all valid color mode values.
func (ColorMode) ShouldColor ¶
ShouldColor returns true if colors should be enabled.
type D2NodeID ¶
type D2NodeID = id.ID[D2NodeIDBrand, string]
D2NodeID is a branded identifier for D2 diagram nodes.
type D2NodeLabel ¶
type D2NodeLabel = id.ID[D2NodeLabelBrand, string]
D2NodeLabel is a branded identifier for D2 diagram node labels.
type D2NodeLabelBrand ¶
type D2NodeLabelBrand struct{}
D2NodeLabelBrand is the brand type for D2 node labels.
type EdgeStyle ¶
type EdgeStyle struct {
// Color is the edge line color.
Color string
// Style is the line style ("solid", "dashed", "dotted").
Style string
// ArrowHead is the arrowhead style at the target end.
ArrowHead string
// ArrowTail is the arrowhead style at the source end.
ArrowTail string
}
EdgeStyle represents styling attributes for an edge.
type Format ¶
type Format string
Format represents the available output format options for CLI applications.
const ( FormatTable Format = "table" FormatJSON Format = "json" FormatCSV Format = "csv" FormatTSV Format = "tsv" FormatMarkdown Format = "markdown" FormatXML Format = "xml" FormatD2 Format = "d2" FormatYAML Format = "yaml" FormatHTML Format = "html" FormatTree Format = "tree" FormatMermaid Format = "mermaid" FormatDOT Format = "dot" FormatJSONL Format = "jsonl" FormatAsciiDoc Format = "asciidoc" FormatTOML Format = "toml" FormatPlantUML Format = "plantuml" )
Output format constants.
func FormatsForShape ¶ added in v0.5.0
FormatsForShape returns all formats that support the given data shape.
func ParseFormat ¶
ParseFormat converts a string to Format, returning an error if invalid.
Example ¶
package main
import (
"fmt"
"os"
"github.com/larsartmann/go-output"
)
func main() {
f, err := output.ParseFormat("json")
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
fmt.Println(f)
}
Output: json
func (Format) AllowedValues ¶
AllowedValues returns all valid output format values for CLI help text.
func (Format) IsValid ¶
IsValid returns true if the format is a valid Format value.
Example ¶
package main
import (
"fmt"
"github.com/larsartmann/go-output"
)
func main() {
fmt.Println(output.FormatCSV.IsValid())
fmt.Println(output.Format("unknown").IsValid())
}
Output: true false
type GraphEdge ¶
type GraphEdge struct {
// From is the source node ID.
From GraphNodeID
// To is the target node ID.
To GraphNodeID
// Label is the optional display text on the edge.
Label GraphNodeLabel
// Style contains optional visual styling attributes.
Style EdgeStyle
}
GraphEdge represents an edge between two nodes.
func NewGraphEdge ¶
NewGraphEdge creates a new GraphEdge.
type GraphNode ¶
type GraphNode struct {
// ID is the unique identifier for the node.
ID GraphNodeID
// Label is the display text for the node.
Label GraphNodeLabel
// Shape defines the visual shape (box, ellipse, diamond, etc.).
Shape GraphShape
// Style contains optional visual styling attributes.
Style GraphStyle
// Metadata holds arbitrary key-value pairs for custom data.
Metadata map[string]string
}
GraphNode represents a node in a graph.
func NewGraphNode ¶
NewGraphNode creates a new GraphNode.
func NodesFromTableData ¶
func NodesFromTableData(data *TableData, labelFn GraphNodeLabelFunc) []GraphNode
NodesFromTableData creates GraphNodes from TableData using the provided label function.
type GraphNodeID ¶
type GraphNodeID = id.ID[GraphNodeIDBrand, string]
GraphNodeID is a branded identifier for graph nodes.
type GraphNodeIDBrand ¶
type GraphNodeIDBrand struct{}
GraphNodeIDBrand is the brand type for graph node IDs.
type GraphNodeLabel ¶
type GraphNodeLabel = id.ID[GraphNodeLabelBrand, string]
GraphNodeLabel is a branded identifier for graph node labels.
type GraphNodeLabelBrand ¶
type GraphNodeLabelBrand struct{}
GraphNodeLabelBrand is the brand type for graph node labels.
type GraphNodeLabelFunc ¶
GraphNodeLabelFunc is a function that formats a cell value with its header into a label.
type GraphRenderer ¶
type GraphRenderer interface {
Renderer
// SetNodes sets the graph nodes.
SetNodes(nodes []GraphNode)
// SetEdges sets the graph edges.
SetEdges(edges []GraphEdge)
}
GraphRenderer defines the interface for graph format renderers.
type GraphRendererState ¶ added in v0.7.0
type GraphRendererState struct {
// contains filtered or unexported fields
}
GraphRendererState contains shared fields and methods for graph renderers.
D2 does not use this mixin because it has richer domain-specific types (D2Node, D2Edge with classes, SQL tables, shapes, arrow types, etc.) that do not map to the simpler GraphNode/GraphEdge model.
func NewGraphRendererState ¶ added in v0.7.0
func NewGraphRendererState() GraphRendererState
NewGraphRendererState creates a new GraphRendererState with initialized slices.
func (*GraphRendererState) AddEdge ¶ added in v0.7.0
func (m *GraphRendererState) AddEdge(edge GraphEdge)
AddEdge appends an edge to the graph.
func (*GraphRendererState) AddNode ¶ added in v0.7.0
func (m *GraphRendererState) AddNode(node GraphNode)
AddNode appends a node to the graph.
func (*GraphRendererState) AddRowEdges ¶ added in v0.7.0
func (m *GraphRendererState) AddRowEdges(data *TableData)
AddRowEdges adds edges from data.CreateRowEdges() to the graph.
func (*GraphRendererState) Edges ¶ added in v0.7.0
func (m *GraphRendererState) Edges() []GraphEdge
Edges returns the graph edges.
func (*GraphRendererState) Nodes ¶ added in v0.7.0
func (m *GraphRendererState) Nodes() []GraphNode
Nodes returns the graph nodes.
func (*GraphRendererState) SetEdges ¶ added in v0.7.0
func (m *GraphRendererState) SetEdges(edges []GraphEdge)
SetEdges sets the graph edges.
func (*GraphRendererState) SetNodes ¶ added in v0.7.0
func (m *GraphRendererState) SetNodes(nodes []GraphNode)
SetNodes sets the graph nodes.
func (*GraphRendererState) SetNodesFromTableData ¶ added in v0.7.0
func (m *GraphRendererState) SetNodesFromTableData( data *TableData, modifyNode func(i int, n *GraphNode), )
SetNodesFromTableData creates nodes from TableData, applies per-node modifications, adds them to the graph, and adds row edges.
type GraphShape ¶
type GraphShape string
GraphShape represents the shape of a graph node.
const ( ShapeBox GraphShape = "box" ShapeEllipse GraphShape = "ellipse" ShapeDiamond GraphShape = "diamond" ShapeCircle GraphShape = "circle" ShapeCylinder GraphShape = "cylinder" ShapeHexagon GraphShape = "hexagon" ShapeParallelogram GraphShape = "parallelogram" ShapeRect GraphShape = "rect" )
GraphShape constants define the available shapes for graph nodes.
func ParseGraphShape ¶
func ParseGraphShape(s string) (GraphShape, error)
ParseGraphShape converts a string to GraphShape, returning an error if invalid.
func (GraphShape) AllowedValues ¶
func (s GraphShape) AllowedValues() []string
AllowedValues returns all valid graph shape values.
func (GraphShape) IsValid ¶
func (s GraphShape) IsValid() bool
IsValid checks if the graph shape is valid.
func (GraphShape) String ¶
func (s GraphShape) String() string
String returns the string representation of the graph shape.
type GraphStyle ¶
type GraphStyle struct {
// FillColor is the background color (e.g., "#f9f9f9").
FillColor string
// StrokeColor is the border color.
StrokeColor string
// FontColor is the text color.
FontColor string
// FontSize is the text size in points.
FontSize int
}
GraphStyle represents styling attributes for a graph node.
type InvalidColorModeError ¶ added in v0.5.0
type InvalidColorModeError struct {
Value string
}
InvalidColorModeError is returned when an invalid color mode is provided.
func (*InvalidColorModeError) Error ¶ added in v0.5.0
func (e *InvalidColorModeError) Error() string
Error returns a descriptive error message for the invalid color mode.
type InvalidFormatError ¶
InvalidFormatError represents an invalid format error.
func (*InvalidFormatError) Error ¶
func (e *InvalidFormatError) Error() string
Error returns a descriptive error message including allowed values.
type InvalidGraphShapeError ¶ added in v0.5.0
type InvalidGraphShapeError struct {
Value string
}
InvalidGraphShapeError is returned when an invalid graph shape is provided.
func (*InvalidGraphShapeError) Error ¶ added in v0.5.0
func (e *InvalidGraphShapeError) Error() string
Error returns a descriptive error message for the invalid graph shape.
type InvalidShapeError ¶ added in v0.5.0
type InvalidShapeError struct {
Value string
}
InvalidShapeError is returned when an invalid data shape is provided.
func (*InvalidShapeError) Error ¶ added in v0.5.0
func (e *InvalidShapeError) Error() string
Error returns a descriptive error message for the invalid shape.
type MarkdownTable ¶
type MarkdownTable struct {
// contains filtered or unexported fields
}
MarkdownTable builds Markdown tables.
func NewMarkdownTable ¶
func NewMarkdownTable() *MarkdownTable
NewMarkdownTable creates a new MarkdownTable.
func NewMarkdownTableFromData ¶
func NewMarkdownTableFromData(data *TableData) *MarkdownTable
NewMarkdownTableFromData creates a MarkdownTable populated from TableData.
func (*MarkdownTable) AddRow ¶
func (m *MarkdownTable) AddRow(row []string) *MarkdownTable
AddRow adds a row to the table.
func (*MarkdownTable) AsTableRenderer ¶ added in v0.6.1
func (m *MarkdownTable) AsTableRenderer() TableRenderer
AsTableRenderer returns a TableRenderer that delegates to this MarkdownTable. This adapts the fluent API (returning *MarkdownTable) to the TableRenderer interface.
func (*MarkdownTable) Render ¶
func (m *MarkdownTable) Render() (string, error)
Render returns the Markdown table string.
func (*MarkdownTable) SetAlign ¶
func (m *MarkdownTable) SetAlign(col int, alignment Alignment) *MarkdownTable
SetAlign sets column alignment.
func (*MarkdownTable) SetColorMode ¶ added in v0.6.0
func (m *MarkdownTable) SetColorMode(mode ColorMode) *MarkdownTable
SetColorMode sets the color mode for terminal output.
func (*MarkdownTable) SetFooter ¶ added in v0.6.1
func (m *MarkdownTable) SetFooter(footer []string) *MarkdownTable
SetFooter sets the footer row for the table.
func (*MarkdownTable) SetHeaders ¶
func (m *MarkdownTable) SetHeaders(headers []string) *MarkdownTable
SetHeaders sets the table headers.
type NodeEdgeAppender ¶ added in v0.7.0
NodeEdgeAppender is implemented by types that can add nodes and edges.
type RenderOptions ¶ added in v0.5.0
type RenderOptions struct {
// Title is used as the document title for HTML output and as a header for Markdown.
Title string
// GraphID is used as the graph identifier for DOT output.
GraphID string
// Writer overrides the default os.Stdout output destination.
Writer io.Writer
// ColorMode controls terminal color output. Defaults to ColorModeAuto.
ColorMode ColorMode
}
RenderOptions configures optional behavior for RenderTableData.
type Renderer ¶
type Renderer interface {
// Render returns the formatted output as a string.
Render() (string, error)
}
Renderer defines the interface for output format renderers.
type Shape ¶ added in v0.5.0
type Shape string
Shape represents a data shape that a format can render.
Example ¶
package main
import (
"fmt"
"github.com/larsartmann/go-output"
)
func main() {
fmt.Println(output.FormatCSV.Supports(output.ShapeTable))
fmt.Println(output.FormatCSV.Supports(output.ShapeTree))
}
Output: true false
const ( ShapeTable Shape = "table" // Tabular data with headers and rows ShapeTree Shape = "tree" // Hierarchical data with parent-child nodes ShapeGraph Shape = "graph" // Network data with nodes and edges )
Data shape constants for format capability classification.
func ParseShape ¶ added in v0.5.0
ParseShape converts a string to Shape, returning an error if invalid.
func (Shape) AllowedValues ¶ added in v0.5.0
AllowedValues returns all valid data shape values for CLI help text.
type StreamingRenderer ¶
type StreamingRenderer interface {
Renderer
// Stream writes the rendered output to an io.Writer in chunks.
Stream(w io.Writer) error
}
StreamingRenderer is an interface for renderers that support streaming output. This is useful for rendering large datasets without loading everything into memory.
Important: Not all implementations provide true streaming. The adapter returned by StreamingRendererFromRenderer collects output before writing. Only StreamingHTMLRenderer (in the markup sub-module) provides genuine streaming behavior.
func StreamingRendererFromRenderer ¶
func StreamingRendererFromRenderer(r Renderer) StreamingRenderer
StreamingRendererFromRenderer wraps a standard Renderer to implement StreamingRenderer. Important: This adapter does not provide true streaming behavior - it collects all output via Render() and then writes it at once. It exists to satisfy the StreamingRenderer interface for renderers that don't have native streaming support.
type TableData ¶
type TableData struct {
// Headers are the column header labels.
Headers []string
// Rows contains the data rows, each a slice of cell values.
Rows [][]string
// Tabular formats (CSV, TSV, Markdown, HTML, XML, AsciiDoc, Table) render it visually.
// Data formats (JSON, YAML, TOML, JSONL) and non-tabular formats skip it.
Footer []string
}
TableData represents tabular data with headers, rows, and an optional footer.
func NewTableData ¶
NewTableData creates a new TableData with the given headers.
func (*TableData) CreateRowEdges ¶
CreateRowEdges generates edge data connecting consecutive rows. Used by graph renderers to create edges between table rows.
func (*TableData) GetFooter ¶ added in v0.6.1
GetFooter returns the footer row, or nil if none is set. Satisfies the table.FooterProvider optional interface.
func (*TableData) GetHeaders ¶
GetHeaders returns the column headers. Satisfies the table.TableDataProvider interface.
func (*TableData) GetRows ¶
GetRows returns the data rows. Satisfies the table.TableDataProvider interface.
func (*TableData) ToMapSlice ¶ added in v0.5.0
ToMapSlice converts TableData to a slice of maps (header→cell). Returns nil if data is nil or has no headers.
func (*TableData) Validate ¶ added in v0.6.1
Validate checks the TableData for consistency. Returns an error if rows are nil, or if the footer column count does not match the header count.
Example ¶
package main
import (
"fmt"
"github.com/larsartmann/go-output"
)
func main() {
data := output.NewTableData([]string{"Name", "Count"})
data.AddRow([]string{"Alice", "10"})
data.SetFooter([]string{"Total", "10"})
fmt.Println(data.Validate())
}
Output: <nil>
type TableDataMarshaler ¶ added in v0.6.0
type TableDataMarshaler func(w io.Writer, data *TableData, opts RenderOptions) error
TableDataMarshaler renders TableData in a specific format to a writer.
type TableDataStore ¶ added in v0.7.0
type TableDataStore struct {
// contains filtered or unexported fields
}
TableDataStore provides common table data storage for renderers.
func (*TableDataStore) AddRow ¶ added in v0.7.0
func (b *TableDataStore) AddRow(row []string)
AddRow adds a data row.
func (*TableDataStore) Data ¶ added in v0.7.0
func (b *TableDataStore) Data() *TableData
Data returns the underlying TableData.
func (*TableDataStore) HasFooter ¶ added in v0.7.0
func (b *TableDataStore) HasFooter() bool
HasFooter returns true if a footer row is present.
func (*TableDataStore) SetData ¶ added in v0.7.0
func (b *TableDataStore) SetData(data *TableData)
SetData sets the table data directly.
func (*TableDataStore) SetFooter ¶ added in v0.7.0
func (b *TableDataStore) SetFooter(footer []string)
SetFooter sets the footer row.
func (*TableDataStore) SetHeaders ¶ added in v0.7.0
func (b *TableDataStore) SetHeaders(headers []string)
SetHeaders sets the column headers.
type TableRenderer ¶
type TableRenderer interface {
Renderer
// SetHeaders sets the column headers.
SetHeaders(headers []string)
// AddRow adds a data row.
AddRow(row []string)
}
TableRenderer defines the interface for table format renderers.
type TreeNode ¶
type TreeNode struct {
// ID is the unique identifier for the node.
ID TreeNodeID
// Label is the display text for the node.
Label TreeNodeLabel
// Children holds the child nodes.
Children []*TreeNode
// Metadata holds arbitrary key-value pairs for custom data.
Metadata map[string]string
// contains filtered or unexported fields
}
TreeNode represents a node in a tree structure.
func NewTreeNode ¶
NewTreeNode creates a new TreeNode with the given ID and label.
type TreeNodeID ¶
type TreeNodeID = id.ID[TreeNodeIDBrand, string]
TreeNodeID is a branded identifier for tree nodes.
type TreeNodeIDBrand ¶
type TreeNodeIDBrand struct{}
TreeNodeIDBrand is the brand type for tree node IDs.
type TreeNodeIDFunc ¶
TreeNodeIDFunc resolves a TreeNode's ID for a specific graph format.
type TreeNodeLabel ¶
type TreeNodeLabel = id.ID[TreeNodeLabelBrand, string]
TreeNodeLabel is a branded identifier for tree node labels.
type TreeNodeLabelBrand ¶
type TreeNodeLabelBrand struct{}
TreeNodeLabelBrand is the brand type for tree node labels.
type TreeOutputRenderer ¶
type TreeOutputRenderer interface {
Renderer
// SetRoot sets the root node of the tree.
SetRoot(node *TreeNode)
}
TreeOutputRenderer defines the interface for tree format renderers.
type UnsupportedFormatError ¶ added in v0.5.0
type UnsupportedFormatError struct {
Format Format
}
UnsupportedFormatError is returned when RenderTableData cannot handle a format.
func (*UnsupportedFormatError) Error ¶ added in v0.5.0
func (e *UnsupportedFormatError) Error() string