Class
Sealed
public sealed class MermaidExtension : IMarkdownExtension
Namespace: Moka.Docs.Parsing.Markdown
Markdig extension that renders fenced code blocks with the "mermaid" language as
elements for client-side Mermaid.js rendering.Inheritance
Inherits from: IMarkdownExtension
Methods
| Name | Description |
|---|---|
Setup(MarkdownPipelineBuilder pipeline) |
|
Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer) |
Type Relationships
classDiagram
style MermaidExtension fill:#f9f,stroke:#333,stroke-width:2px
MermaidExtension --|> IMarkdownExtension : inherits
View Source
/// <summary>
/// Markdig extension that renders fenced code blocks with the "mermaid" language
/// as <c><pre class="mermaid"></c> elements for client-side Mermaid.js rendering.
/// </summary>
public sealed class MermaidExtension : IMarkdownExtension
{
/// <inheritdoc/>
public void Setup(MarkdownPipelineBuilder pipeline)
{
// No block parser changes needed — we reuse the built-in FencedCodeBlock parser.
}
/// <inheritdoc/>
public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer)
{
if (renderer is HtmlRenderer htmlRenderer)
{
// Replace the default CodeBlockRenderer with our wrapper that
// handles mermaid blocks specially and delegates everything else.
CodeBlockRenderer? defaultRenderer = htmlRenderer.ObjectRenderers.FindExact<CodeBlockRenderer>();
if (defaultRenderer != null)
{
htmlRenderer.ObjectRenderers.Remove(defaultRenderer);
}
htmlRenderer.ObjectRenderers.AddIfNotAlready(new MermaidCodeBlockRenderer(defaultRenderer));
}
}
}