elements for client-side Mermaid.js rendering." />
    
    
        
 elements for client-side Mermaid.js rendering." />
        
        
        
        
        
        
 elements for client-side Mermaid.js rendering." />
    
    
        
    
    


    

    
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

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>&lt;pre class="mermaid"&gt;</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));
        }
    }
}