Class Sealed
public sealed class AdmonitionRenderer : HtmlObjectRenderer<Moka.Docs.Parsing.Markdown.AdmonitionBlock>

Namespace: Moka.Docs.Parsing.Markdown

Renders admonition blocks as styled HTML.

Inheritance

Inherits from: HtmlObjectRenderer<Moka.Docs.Parsing.Markdown.AdmonitionBlock>

Methods

Type Relationships
classDiagram
                    style AdmonitionRenderer fill:#f9f,stroke:#333,stroke-width:2px
                    AdmonitionRenderer --|> AdmonitionBlock~ : inherits
                
View Source
/// <summary>
///     Renders admonition blocks as styled HTML.
/// </summary>
public sealed class AdmonitionRenderer : HtmlObjectRenderer<AdmonitionBlock>
{
    private static readonly Dictionary<string, string> _icons = new(StringComparer.OrdinalIgnoreCase)
    {
        ["note"] = "📝",
        ["tip"] = "💡",
        ["warning"] = "⚠️",
        ["danger"] = "🚨",
        ["info"] = "ℹ️",
        ["caution"] = "⚠️",
        ["important"] = "❗"
    };
    /// <inheritdoc/>
    protected override void Write(HtmlRenderer renderer, AdmonitionBlock block)
    {
        string type = block.AdmonitionType;
        string title = block.Title ?? char.ToUpper(type[0]) + type[1..];
        string icon = _icons.GetValueOrDefault(type, "📝");
        renderer.EnsureLine();
        renderer.Write($"<div class=\"admonition admonition-{type}\">");
        renderer.WriteLine();
        renderer.Write($"<div class=\"admonition-title\"><span class=\"admonition-icon\">{icon}</span>{title}</div>");
        renderer.WriteLine();
        renderer.Write("<div class=\"admonition-content\">");
        renderer.WriteLine();
        renderer.WriteChildren(block);
        renderer.Write("</div>");
        renderer.WriteLine();
        renderer.Write("</div>");
        renderer.WriteLine();
    }
}
Was this page helpful?