Class
Sealed
public sealed class StepsRenderer : HtmlObjectRenderer<Moka.Docs.Parsing.Markdown.StepsBlock>
Namespace: Moka.Docs.Parsing.Markdown
Renders a steps block as numbered step-by-step HTML.
Inheritance
Inherits from: HtmlObjectRenderer<Moka.Docs.Parsing.Markdown.StepsBlock>
Methods
| Name | Description |
|---|---|
Write(HtmlRenderer renderer, StepsBlock block) override |
Type Relationships
classDiagram
style StepsRenderer fill:#f9f,stroke:#333,stroke-width:2px
StepsRenderer --|> StepsBlock~ : inherits
View Source
/// <summary>
/// Renders a steps block as numbered step-by-step HTML.
/// </summary>
public sealed class StepsRenderer : HtmlObjectRenderer<StepsBlock>
{
/// <inheritdoc/>
protected override void Write(HtmlRenderer renderer, StepsBlock block)
{
renderer.EnsureLine();
renderer.Write("<div class=\"component-steps\">");
renderer.WriteLine();
int stepNumber = 0;
foreach (Block child in block)
{
if (child is HeadingBlock heading && heading.Level == 3)
{
// Close previous step if not the first
if (stepNumber > 0)
{
renderer.Write("</div>"); // close step-content
renderer.WriteLine();
renderer.Write("</div>"); // close step
renderer.WriteLine();
}
stepNumber++;
renderer.Write("<div class=\"component-step\">");
renderer.WriteLine();
renderer.Write($"<div class=\"component-step-indicator\"><span class=\"component-step-number\">{stepNumber}</span></div>");
renderer.WriteLine();
renderer.Write("<div class=\"component-step-content\">");
renderer.WriteLine();
// Render heading text as step title
renderer.Write("<h3 class=\"component-step-title\">");
if (heading.Inline != null)
{
renderer.WriteChildren(heading.Inline);
}
renderer.Write("</h3>");
renderer.WriteLine();
}
else
{
// If we haven't started a step yet but have content, start an implicit step
if (stepNumber == 0)
{
stepNumber++;
renderer.Write("<div class=\"component-step\">");
renderer.WriteLine();
renderer.Write($"<div class=\"component-step-indicator\"><span class=\"component-step-number\">{stepNumber}</span></div>");
renderer.WriteLine();
renderer.Write("<div class=\"component-step-content\">");
renderer.WriteLine();
}
// Render the child block using its registered renderer
renderer.Write(child);
}
}
// Close last step
if (stepNumber > 0)
{
renderer.Write("</div>"); // close step-content
renderer.WriteLine();
renderer.Write("</div>"); // close step
renderer.WriteLine();
}
renderer.Write("</div>");
renderer.WriteLine();
}
}