Repository navigation
Expand file tree
/
Copy pathGraphNode.cs
More file actions
61 lines (50 loc) · 1.57 KB
/
Copy pathGraphNode.cs
File metadata and controls
61 lines (50 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Collections.Generic;
namespace FluentApi.Graph
{
public class GraphNode
{
public readonly Dictionary<string, string> Attributes = new Dictionary<string, string>();
public string Name { get; }
public GraphNode(string name)
{
Name = name;
}
public GraphNode Color(string color)
{
if (!Attributes.TryGetValue("color", out _))
Attributes.Add("color", color);
return this;
}
public GraphNode Shape(NodeShape nodeShape)
{
if (!Attributes.TryGetValue("shape", out _))
Attributes.Add("shape", GetShapeName(nodeShape));
return this;
}
private string GetShapeName(NodeShape shape)
{
switch (shape)
{
case NodeShape.Box:
return "box";
case NodeShape.Ellipse:
return "ellipse";
default:
throw new ArgumentOutOfRangeException(nameof(shape), shape, null);
}
}
public GraphNode FontSize(int fontSize)
{
if (!Attributes.TryGetValue("fontsize", out _))
Attributes.Add("fontsize", fontSize.ToString());
return this;
}
public GraphNode Label(string label)
{
if (!Attributes.TryGetValue("label", out _))
Attributes.Add("label", label);
return this;
}
}
}