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