Class Sealed
public sealed class ComponentExtension : IMarkdownExtension

Namespace: Moka.Docs.Parsing.Markdown

Markdig extension for UI components (card, steps, link-cards, code-group). Uses the ::: type{attrs} syntax.

Inheritance

Inherits from: IMarkdownExtension

Methods

Type Relationships
classDiagram
                    style ComponentExtension fill:#f9f,stroke:#333,stroke-width:2px
                    ComponentExtension --|> IMarkdownExtension : inherits
                
View Source
/// <summary>
///     Markdig extension for UI components (card, steps, link-cards, code-group).
///     Uses the <c>::: type{attrs}</c> syntax.
/// </summary>
public sealed class ComponentExtension : IMarkdownExtension
{
    /// <inheritdoc/>
    public void Setup(MarkdownPipelineBuilder pipeline)
    {
        if (!pipeline.BlockParsers.Contains<ComponentParser>())
        // Insert at position 0 so it runs before CustomContainerParser
        // (which also handles ::: syntax but renders generic <div> elements)
        {
            pipeline.BlockParsers.Insert(0, new ComponentParser());
        }
    }

    /// <inheritdoc/>
    public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer)
    {
        if (renderer is HtmlRenderer htmlRenderer)
        {
            if (!htmlRenderer.ObjectRenderers.Contains<CardRenderer>())
            {
                htmlRenderer.ObjectRenderers.Add(new CardRenderer());
            }

            if (!htmlRenderer.ObjectRenderers.Contains<StepsRenderer>())
            {
                htmlRenderer.ObjectRenderers.Add(new StepsRenderer());
            }

            if (!htmlRenderer.ObjectRenderers.Contains<LinkCardsRenderer>())
            {
                htmlRenderer.ObjectRenderers.Add(new LinkCardsRenderer());
            }

            if (!htmlRenderer.ObjectRenderers.Contains<CodeGroupRenderer>())
            {
                htmlRenderer.ObjectRenderers.Add(new CodeGroupRenderer());
            }
        }
    }
}
Was this page helpful?