Documentation
¶
Index ¶
- Variables
- func AddTreeNodes(nodes *[]GraphNode, edges *[]GraphEdge, node *TreeNode, parentID string, ...)
- func DefaultGraphNodeLabel(header, cell string) string
- func MarshalFormat(format string, marshalFn func(any) ([]byte, error), v any) ([]byte, error)
- 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 RegisterTableDataMarshaler(format Format, marshaler TableDataMarshaler)
- func RenderTableData(data *TableData, format Format, opts ...RenderOptions) error
- func UnmarshalFormat(format string, unmarshalFn func([]byte, any) error, data []byte, v any) 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 GraphRendererMixin
- func (m *GraphRendererMixin) AddRowEdges(data *TableData)
- func (m *GraphRendererMixin) Edges() []GraphEdge
- func (m *GraphRendererMixin) EdgesPtr() *[]GraphEdge
- func (m *GraphRendererMixin) Nodes() []GraphNode
- func (m *GraphRendererMixin) NodesPtr() *[]GraphNode
- func (m *GraphRendererMixin) SetEdges(edges []GraphEdge)
- func (m *GraphRendererMixin) SetNodes(nodes []GraphNode)
- func (m *GraphRendererMixin) 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) Render() (string, error)
- func (m *MarkdownTable) SetAlign(col int, alignment Alignment) *MarkdownTable
- func (m *MarkdownTable) SetColorMode(mode ColorMode) *MarkdownTable
- func (m *MarkdownTable) SetHeaders(headers []string) *MarkdownTable
- type RenderOptions
- type Renderer
- type RowEdge
- type Shape
- type StreamingRenderer
- type TableData
- type TableDataBase
- type TableDataMarshaler
- type TableRenderer
- type TreeNode
- type TreeNodeID
- type TreeNodeIDBrand
- type TreeNodeIDFunc
- type TreeNodeLabel
- type TreeNodeLabelBrand
- type TreeOutputRenderer
- type UnsupportedFormatError
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( nodes *[]GraphNode, edges *[]GraphEdge, node *TreeNode, parentID string, idFunc TreeNodeIDFunc, shape GraphShape, )
AddTreeNodes recursively adds tree nodes and edges to the provided graph slices.
func DefaultGraphNodeLabel ¶
DefaultGraphNodeLabel returns a label in the format "header: cell".
func MarshalFormat ¶ added in v0.6.0
MarshalFormat encodes v using the provided marshal function.
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.
func NewBrandedID ¶
NewBrandedID creates a new branded ID from a string value.
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: csv, tsv, markdown, xml, yaml, html, tree (when respective sub-modules are imported).
D2, Mermaid, and DOT are NOT handled — those require importing the d2 or graph sub-modules directly. Table and JSON formats also require per-command customization (table for lipgloss styling, json for full struct marshaling).
Returns UnsupportedFormatError for unsupported formats (d2, mermaid, dot, table, json).
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 Alignment ¶
type Alignment int
Alignment represents text alignment within a table cell.
const ( AlignLeft Alignment = AlignmentLeft AlignRight Alignment = AlignmentRight AlignCenter Alignment = AlignmentCenter )
Column alignment constants.
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.
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 string
Style string // solid, dashed, dotted
ArrowHead string
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.
func (Format) AllowedValues ¶
AllowedValues returns all valid output format values for CLI help text.
type GraphEdge ¶
type GraphEdge struct {
From GraphNodeID
To GraphNodeID
Label GraphNodeLabel
Style EdgeStyle
}
GraphEdge represents an edge between two nodes.
func NewGraphEdge ¶
NewGraphEdge creates a new GraphEdge.
type GraphNode ¶
type GraphNode struct {
ID GraphNodeID
Label GraphNodeLabel
Shape GraphShape
Style GraphStyle
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 GraphRendererMixin ¶
type GraphRendererMixin struct {
// contains filtered or unexported fields
}
GraphRendererMixin 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 NewGraphRendererMixin ¶
func NewGraphRendererMixin() GraphRendererMixin
NewGraphRendererMixin creates a new GraphRendererMixin with initialized slices.
func (*GraphRendererMixin) AddRowEdges ¶
func (m *GraphRendererMixin) AddRowEdges(data *TableData)
AddRowEdges adds edges from data.CreateRowEdges() to the graph.
func (*GraphRendererMixin) Edges ¶ added in v0.5.0
func (m *GraphRendererMixin) Edges() []GraphEdge
Edges returns the graph edges.
func (*GraphRendererMixin) EdgesPtr ¶ added in v0.5.0
func (m *GraphRendererMixin) EdgesPtr() *[]GraphEdge
EdgesPtr returns a pointer to the graph edges slice for mutation.
func (*GraphRendererMixin) Nodes ¶ added in v0.5.0
func (m *GraphRendererMixin) Nodes() []GraphNode
Nodes returns the graph nodes.
func (*GraphRendererMixin) NodesPtr ¶ added in v0.5.0
func (m *GraphRendererMixin) NodesPtr() *[]GraphNode
NodesPtr returns a pointer to the graph nodes slice for mutation.
func (*GraphRendererMixin) SetEdges ¶
func (m *GraphRendererMixin) SetEdges(edges []GraphEdge)
SetEdges sets the graph edges.
func (*GraphRendererMixin) SetNodes ¶
func (m *GraphRendererMixin) SetNodes(nodes []GraphNode)
SetNodes sets the graph nodes.
func (*GraphRendererMixin) SetNodesFromTableData ¶
func (m *GraphRendererMixin) 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 ¶
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
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
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
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) 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) SetHeaders ¶
func (m *MarkdownTable) SetHeaders(headers []string) *MarkdownTable
SetHeaders sets the table headers.
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.
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 ¶
TableData represents tabular data with headers and rows.
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) 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.
type TableDataBase ¶ added in v0.6.0
type TableDataBase struct {
// contains filtered or unexported fields
}
TableDataBase provides common table data storage for renderers.
func (*TableDataBase) AddRow ¶ added in v0.6.0
func (b *TableDataBase) AddRow(row []string)
AddRow adds a data row.
func (*TableDataBase) Data ¶ added in v0.6.0
func (b *TableDataBase) Data() *TableData
Data returns the underlying TableData.
func (*TableDataBase) SetData ¶ added in v0.6.0
func (b *TableDataBase) SetData(data *TableData)
SetData sets the table data directly.
func (*TableDataBase) SetHeaders ¶ added in v0.6.0
func (b *TableDataBase) SetHeaders(headers []string)
SetHeaders sets the column headers.
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 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 TreeNodeID
Label TreeNodeLabel
Children []*TreeNode
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
func (*UnsupportedFormatError) Unwrap ¶ added in v0.5.0
func (e *UnsupportedFormatError) Unwrap() error