MermaidDiagrams 0.3.5
dotnet add package MermaidDiagrams --version 0.3.5
NuGet\Install-Package MermaidDiagrams -Version 0.3.5
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MermaidDiagrams" Version="0.3.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MermaidDiagrams --version 0.3.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MermaidDiagrams, 0.3.5"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MermaidDiagrams as a Cake Addin
#addin nuget:?package=MermaidDiagrams&version=0.3.5
// Install MermaidDiagrams as a Cake Tool
#tool nuget:?package=MermaidDiagrams&version=0.3.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Mermaid Diagrams
.net support for Mermaid diagrams
Flowcharts
Create a flowchart
Declare a chart and render it to a string.
var flow = new FlowchartGraph(FlowDirection.TopBottom);
var output = flow.Render();
Setup a flowchart
- Use
SetOptions
to set theme - Set a title with
SetHeader
- Add a comment with
AddComment
- Add nodes with
Node
- Add links with
Link
flow.SetOptions(new FlowchartInit { Theme = KnownThemes.Forest });
flow.SetHeader(new Header("This is a test"));
flow.Comment("No comment");
var idA = "A".ToIdentifier();
flow.Node(idA, "Hard edge", Shape.Box)
.Node("B", "Round edge", Shape.RoundedBox);
flow.Link(idA, flow["B"], Edge.Arrow.WithLabel("Link text"));
var c = flow.CreateNode("C", "Decision", Shape.Rhombus);
var d = flow.CreateNode("D", "Result One", Shape.Trapezoid);
var e = flow.CreateNode("E", "Result Two", Shape.Circle);
flow.Link(flow["B"], c, Edge.Arrow);
flow.Link(c, d, Edge.Arrow.WithLabel("Yes"));
flow.Link(c, e, Edge.Arrow.WithLabel("No"));
Subgraphs
flow.Subgraph("Outer", Identifier.Next("sg"), FlowDirection.TopBottom,
sub =>
{
sub.Node("Something", Shape.Stadium);
var sg = sub.Subgraph("Inner", "in1");
sg.Node("A", "Hard edge", Shape.Box);
});
Theme and Styles
Define a style by name and assign it to a node by it's identifier.
var cd = flow.GetClassDefinitions();
cd.GetOrCreate("neat", s
=> new ClassDef(s)
.Style("fill", "#f96")
.Style("stroke", "#333")
.Style("stroke-width", "2px")
.Assign("A")
);
Use a stock theme.
flow.SetOptions(new FlowchartInit { Theme = KnownThemes.Forest });
Defining a custom theme
var customTheme = FlowchartInit.CreateCustomTheme(theme =>
{
theme.PrimaryColor = "#f96";
theme.SecondaryColor = "#363";
theme.LineColor = "#363";
theme.TertiaryColor = "#f96";
theme.PrimaryBorderColor = "#333";
theme.PrimaryTextColor = "#633";
});
flow.SetOptions(customTheme);
Git
Create a git graph
Declare a graph and render it to a string.
var git = new GitGraph();
var output = git.Render();
Examples
git
.Branch("A", 3)
.Branch("B", 2)
.Branch("C", 1)
.Commit()
.Commit()
.Checkout("A")
.Commit();
git
.Commit()
.Commit("bob")
.Commit("sue", CommitType.Reverse)
.Commit(tag: "tag")
.Branch(hotfix)
.Checkout(hotfix)
.Commit()
.Commit(CommitType.Reverse)
.Merge(git.MainBranch)
.Branch("POC")
.CherryPick("sue");
Change options
git.SetOptions(new GitGraphInit
{
GitGraph = new()
{
ShowBranches = false,
ShowCommitLabel = false,
MainBranchName = "master",
MainBranchOrder = 4,
RotateCommitLabel = false
},
Theme = "base",
ThemeVariables = new ()
{
Git0 = "#FF0000"
}
});
Sequence diagrams
Create a sequence diagram
Declare a diagram and render it to a string.
var sequence = new SequenceDiagram();
var output = sequence.Render();
Examples
sequence
.SetAutoNumbering()
.Participant("Alice")
.Participant("Bob")
.Note("Bob", "Bob is cool", NotePosition.RightOf)
.Message("Alice", "Bob", "Can you hear me now?", ArrowType.DottedLineCross, true)
.Comment("topical reference")
.Message("Bob", "Alice", "Goodbye", ArrowType.SolidLineArrow, false)
.Note("Alice", "This is a floating note", NotePosition.Over, "Bob");
Loop, alternate and optional
var b = sequence
.Participant("A", "Alice", true)
.CreateParticipant("B", "Bob", true);
sequence
.Message("A", "B", "Hello Bob, how are you?")
.Activate(b)
.Message("B", "A", "Great!", ArrowType.DottedLineArrow)
.Deactivate(b)
.Loop("Tell me when", l =>
{
l.Message("A", "B", "When!");
})
.Alternate(
yes =>
{
yes.SetLabel("Should I?")
.Message("A", "B", "Yes!");
},
no =>
{
no.SetLabel("Or not")
.Message("A", "B", "No!");
}
)
.Optional("Sometimes we do this...", o =>
{
o.Message("A", "B", "We did it!");
});
Parallel, highlight and break
sequence
.Parallel(
first =>
{
first.Message(a, b, "Apples");
},
second =>
{
second.Message(b, a, "Oranges");
},
third =>
{
third.Message(a, c, "Pears");
}
)
.Highlight(Color.Azure, h =>
{
h.Critical(critical =>
{
critical.Message(a, b, "Don't lose your sense of humor");
},
option1 =>
{
option1.Message(a, c, "Stay positive");
}
);
})
.Break("This is a break", b =>
{
b.Message(c, a, "I'm back!");
});
Other charts
To be done...
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- System.Collections.Immutable (>= 7.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Text.Json (>= 6.0.0)
-
.NETStandard 2.1
- System.Collections.Immutable (>= 7.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Text.Json (>= 6.0.0)
-
net6.0
- System.Collections.Immutable (>= 7.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Text.Json (>= 6.0.0)
-
net7.0
- System.Collections.Immutable (>= 7.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Text.Json (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.