wolf_graph_mermaid/details/node_shape.rs
1// import Foundation
2//
3// public enum NodeShape: String {
4// case rectangle
5// case rounded
6// case stadium
7// case subroutine
8// case cylinder
9// case circle
10// case asymmetric
11// case rhombus
12// case hexagon
13// case parallelogram
14// case parallelogramAlt
15// case trapezoid
16// case trapezoidAlt
17// case doubleCircle
18//
19// var delimiters: (String, String) {
20// switch self {
21// case .rectangle:
22// return ("[", "]")
23// case .rounded:
24// return ("(", ")")
25// case .stadium:
26// return ("([", "])")
27// case .subroutine:
28// return ("[[", "]]")
29// case .cylinder:
30// return ("[(", ")]")
31// case .circle:
32// return ("((", "))")
33// case .asymmetric:
34// return (">", "]")
35// case .rhombus:
36// return ("{", "}")
37// case .hexagon:
38// return ("{{", "}}")
39// case .parallelogram:
40// return ("[/", "/]")
41// case .parallelogramAlt:
42// return ("[\\", "\\]")
43// case .trapezoid:
44// return ("[/", "\\]")
45// case .trapezoidAlt:
46// return ("[\\", "/]")
47// case .doubleCircle:
48// return ("(((", ")))")
49// }
50// }
51// }
52
53#[derive(Debug, Clone, PartialEq)]
54pub enum NodeShape {
55 Rectangle,
56 Rounded,
57 Stadium,
58 Subroutine,
59 Cylinder,
60 Circle,
61 Asymmetric,
62 Rhombus,
63 Hexagon,
64 Parallelogram,
65 ParallelogramAlt,
66 Trapezoid,
67 TrapezoidAlt,
68 DoubleCircle,
69}
70
71impl NodeShape {
72 pub fn delimiters(&self) -> (&'static str, &'static str) {
73 match self {
74 NodeShape::Rectangle => ("[", "]"),
75 NodeShape::Rounded => ("(", ")"),
76 NodeShape::Stadium => ("([", "])"),
77 NodeShape::Subroutine => ("[[", "]]"),
78 NodeShape::Cylinder => ("[(", ")]"),
79 NodeShape::Circle => ("((", "))"),
80 NodeShape::Asymmetric => (">", "]"),
81 NodeShape::Rhombus => ("{", "}"),
82 NodeShape::Hexagon => ("{{", "}}"),
83 NodeShape::Parallelogram => ("[/", "/]"),
84 NodeShape::ParallelogramAlt => ("[\\", "\\]"),
85 NodeShape::Trapezoid => ("[/", "\\]"),
86 NodeShape::TrapezoidAlt => ("[\\", "/]"),
87 NodeShape::DoubleCircle => ("(((", ")))"),
88 }
89 }
90}