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
| Name | Description |
|---|---|
Setup(MarkdownPipelineBuilder pipeline) |
|
Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer) |
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());
}
}
}
}