///|
pub enum DiagramKind {
Flowchart
State
Class
Er
} derive(Show, Eq)
///|
pub enum Direction {
TD
LR
BT
RL
} derive(Show, Eq)
///|
pub enum NodeShape {
Rect
Rounded
Circle
StateStart
StateEnd
} derive(Show, Eq)
///|
pub struct GraphNode {
id : String
label : String
shape : NodeShape
sections : Array[Array[String]]
} derive(Show, Eq)
///|
pub struct GraphEdge {
from : String
to : String
label : String?
} derive(Show, Eq)
///|
pub struct GraphDiagram {
kind : DiagramKind
direction : Direction
nodes : Array[GraphNode]
edges : Array[GraphEdge]
} derive(Show, Eq)
///|
pub enum ActorKind {
Participant
Actor
} derive(Show, Eq)
///|
pub struct SequenceActor {
id : String
label : String
kind : ActorKind
} derive(Show, Eq)
///|
pub struct SequenceMessage {
from : String
to : String
text : String
dashed : Bool
} derive(Show, Eq)
///|
pub struct SequenceDiagram {
actors : Array[SequenceActor]
messages : Array[SequenceMessage]
} derive(Show, Eq)
///|
pub enum MermaidDiagram {
Graph(GraphDiagram)
Sequence(SequenceDiagram)
} derive(Show, Eq)
///|
struct Point {
x : Int
y : Int
} derive(Show, Eq)
///|
struct LayoutBox {
x : Int
y : Int
width : Int
height : Int
} derive(Show, Eq)
///|
struct PositionedNode {
node : GraphNode
box : LayoutBox
} derive(Show, Eq)
///|
struct PositionedEdge {
edge : GraphEdge
start : Point
end : Point
} derive(Show, Eq)
///|
struct PositionedGraph {
nodes : Array[PositionedNode]
edges : Array[PositionedEdge]
width : Int
height : Int
direction : Direction
kind : DiagramKind
} derive(Show, Eq)
///|
struct PositionedActor {
actor : SequenceActor
box : LayoutBox
} derive(Show, Eq)
///|
struct PositionedMessage {
message : SequenceMessage
start : Point
end : Point
y : Int
} derive(Show, Eq)
///|
struct PositionedSequence {
actors : Array[PositionedActor]
messages : Array[PositionedMessage]
width : Int
height : Int
} derive(Show, Eq)