Help us shape the future of Go! Take the 2026 Go Developer Survey

render

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package render provides multiple output formats for system-spec graphs.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CytoscapeEdge

type CytoscapeEdge struct {
	Data CytoscapeEdgeData `json:"data"`
}

CytoscapeEdge represents an edge in Cytoscape format.

type CytoscapeEdgeData

type CytoscapeEdgeData struct {
	ID       string `json:"id"`
	Source   string `json:"source"`
	Target   string `json:"target"`
	Label    string `json:"label,omitempty"`
	Kind     string `json:"kind"`
	Protocol string `json:"protocol,omitempty"`
	Port     int    `json:"port,omitempty"`
}

CytoscapeEdgeData contains edge properties.

type CytoscapeElements

type CytoscapeElements struct {
	Nodes []CytoscapeNode `json:"nodes"`
	Edges []CytoscapeEdge `json:"edges"`
}

CytoscapeElements contains nodes and edges.

type CytoscapeNode

type CytoscapeNode struct {
	Data CytoscapeNodeData `json:"data"`
}

CytoscapeNode represents a node in Cytoscape format.

type CytoscapeNodeData

type CytoscapeNodeData struct {
	ID       string `json:"id"`
	Label    string `json:"label"`
	Kind     string `json:"kind"`
	Group    string `json:"group,omitempty"`
	Provider string `json:"provider,omitempty"`
	Image    string `json:"image,omitempty"`
	Repo     string `json:"repo,omitempty"`
}

CytoscapeNodeData contains node properties.

type CytoscapeOutput

type CytoscapeOutput struct {
	Elements CytoscapeElements `json:"elements"`
}

CytoscapeOutput is the JSON structure for Cytoscape.js.

type CytoscapeRenderer

type CytoscapeRenderer struct{}

CytoscapeRenderer renders graphs to Cytoscape.js JSON format. See: https://js.cytoscape.org/

func NewCytoscapeRenderer

func NewCytoscapeRenderer() *CytoscapeRenderer

NewCytoscapeRenderer creates a CytoscapeRenderer.

func (*CytoscapeRenderer) Format

func (r *CytoscapeRenderer) Format() Format

Format returns the output format.

func (*CytoscapeRenderer) Render

func (r *CytoscapeRenderer) Render(g *graph.Graph) ([]byte, error)

Render converts the graph to Cytoscape.js JSON.

type D2Renderer

type D2Renderer struct {
	// Direction of the diagram (right, down, left, up)
	Direction string
}

D2Renderer renders graphs to D2 diagram language. See: https://d2lang.com/

func NewD2Renderer

func NewD2Renderer() *D2Renderer

NewD2Renderer creates a D2Renderer with default settings.

func (*D2Renderer) Format

func (r *D2Renderer) Format() Format

Format returns the output format.

func (*D2Renderer) Render

func (r *D2Renderer) Render(g *graph.Graph) ([]byte, error)

Render converts the graph to D2 format.

type DOTRenderer

type DOTRenderer struct {
	// Rankdir: LR, TB, RL, BT
	Rankdir string
}

DOTRenderer renders graphs to GraphViz DOT format. See: https://graphviz.org/

func NewDOTRenderer

func NewDOTRenderer() *DOTRenderer

NewDOTRenderer creates a DOTRenderer with default settings.

func (*DOTRenderer) Format

func (r *DOTRenderer) Format() Format

Format returns the output format.

func (*DOTRenderer) Render

func (r *DOTRenderer) Render(g *graph.Graph) ([]byte, error)

Render converts the graph to GraphViz DOT format.

type Format

type Format string

Format identifies the output format.

const (
	FormatD2        Format = "d2"
	FormatMermaid   Format = "mermaid"
	FormatCytoscape Format = "cytoscape"
	FormatSigma     Format = "sigma"
	FormatDOT       Format = "dot"
	FormatJSON      Format = "json"
)

func SupportedFormats

func SupportedFormats() []Format

SupportedFormats returns all supported output formats.

type MermaidRenderer

type MermaidRenderer struct {
	// Direction: LR (left-right), TB (top-bottom), RL, BT
	Direction string
}

MermaidRenderer renders graphs to Mermaid diagram syntax. See: https://mermaid.js.org/

func NewMermaidRenderer

func NewMermaidRenderer() *MermaidRenderer

NewMermaidRenderer creates a MermaidRenderer with default settings.

func (*MermaidRenderer) Format

func (r *MermaidRenderer) Format() Format

Format returns the output format.

func (*MermaidRenderer) Render

func (r *MermaidRenderer) Render(g *graph.Graph) ([]byte, error)

Render converts the graph to Mermaid format.

type Renderer

type Renderer interface {
	// Format returns the output format identifier.
	Format() Format

	// Render converts the graph to the output format.
	Render(g *graph.Graph) ([]byte, error)
}

Renderer converts a Graph to a specific output format.

type Renderers

type Renderers struct {
	D2        *D2Renderer
	Mermaid   *MermaidRenderer
	Cytoscape *CytoscapeRenderer
	Sigma     *SigmaRenderer
	DOT       *DOTRenderer
}

Renderers provides access to all available renderers. This is a concrete struct, not a registry with interface{}.

func NewRenderers

func NewRenderers() *Renderers

NewRenderers creates a Renderers instance with default settings.

func (*Renderers) Get

func (r *Renderers) Get(f Format) Renderer

Get returns a renderer by format, or nil if not found.

type SigmaEdge

type SigmaEdge struct {
	ID       string  `json:"id"`
	Source   string  `json:"source"`
	Target   string  `json:"target"`
	Label    string  `json:"label,omitempty"`
	Size     float64 `json:"size"`
	Color    string  `json:"color"`
	Kind     string  `json:"kind"`
	Protocol string  `json:"protocol,omitempty"`
	Port     int     `json:"port,omitempty"`
}

SigmaEdge represents an edge in Sigma format.

type SigmaNode

type SigmaNode struct {
	ID         string            `json:"id"`
	Label      string            `json:"label"`
	X          float64           `json:"x"`
	Y          float64           `json:"y"`
	Size       float64           `json:"size"`
	Color      string            `json:"color"`
	Kind       string            `json:"kind"`
	Attributes map[string]string `json:"attributes,omitempty"`
}

SigmaNode represents a node in Sigma format.

type SigmaOutput

type SigmaOutput struct {
	Nodes []SigmaNode `json:"nodes"`
	Edges []SigmaEdge `json:"edges"`
}

SigmaOutput is the JSON structure for Sigma.js.

type SigmaRenderer

type SigmaRenderer struct {
	// Width of the layout canvas
	Width float64
	// Height of the layout canvas
	Height float64
}

SigmaRenderer renders graphs to Sigma.js JSON format. Optimized for large graphs with force-directed layout hints. See: https://www.sigmajs.org/

func NewSigmaRenderer

func NewSigmaRenderer() *SigmaRenderer

NewSigmaRenderer creates a SigmaRenderer with default settings.

func (*SigmaRenderer) Format

func (r *SigmaRenderer) Format() Format

Format returns the output format.

func (*SigmaRenderer) Render

func (r *SigmaRenderer) Render(g *graph.Graph) ([]byte, error)

Render converts the graph to Sigma.js JSON.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL