protected override void Write(MamlRenderer renderer, ListBlock listBlock) { renderer.EnsureLine(); if (listBlock.IsOrdered) { renderer.Push(MamlElements.list, new Dictionary <string, string> { ["class"] = "ordered" }); } else { renderer.Push(MamlElements.list, new Dictionary <string, string> { ["class"] = "bullet" }); } foreach (var item in listBlock) { var listItem = (ListItemBlock)item; renderer.EnsureLine(); renderer.Push(MamlElements.listItem); renderer.WriteChildren(listItem); renderer.PopTo(MamlElements.listItem); } renderer.PopTo(MamlElements.list); }
protected override void Write(MamlRenderer renderer, ParagraphBlock obj) { if (!renderer.IsFirstInContainer) { renderer.EnsureLine(); } renderer.Push(MamlElements.para); renderer.WriteLeafInline(obj); renderer.EnsureLine(); renderer.PopTo(MamlElements.para); }
protected override void Write(MamlRenderer renderer, Markdig.Extensions.Figures.FigureCaption obj) { renderer.Push(MamlElements.para); renderer.WriteLeafInline(obj); renderer.EnsureLine(); renderer.PopTo(MamlElements.para); }
protected override void Write(MamlRenderer renderer, QuoteBlock obj) { renderer.EnsureLine(); renderer.Push(MamlElements.quote); renderer.WriteChildren(obj); renderer.PopTo(MamlElements.quote); }
protected override void Write(MamlRenderer renderer, CodeBlock obj) { renderer.EnsureLine(); renderer.Push(MamlElements.code); renderer.WriteLeafRawLines(obj, true, true); renderer.PopTo(MamlElements.code); }
protected override void Write(MamlRenderer renderer, HeadingBlock obj) { bool newFileWasStarted = renderer.TryStartNewMamlFile(obj); if (newFileWasStarted) { } else { // Ensure we have the sections element somewhere down the line ... // we need (obj.Level - renderer.SplitLevel) section elements down the stack int numberOfSectionsElementsRequired = obj.Level - renderer.SplitLevel - 1; int numberOfSectionsElementsOnStack = renderer.NumberOfElementsOnStack(MamlElements.sections); // Push sections element if required for (int i = 0; i < numberOfSectionsElementsRequired - numberOfSectionsElementsOnStack; ++i) { renderer.Push(MamlElements.sections); } if (numberOfSectionsElementsOnStack > 0 && numberOfSectionsElementsRequired > 0) { // Or pop sections elements if required for (int i = 0; i < numberOfSectionsElementsOnStack - numberOfSectionsElementsRequired; ++i) { renderer.PopToBefore(MamlElements.sections); } } if (numberOfSectionsElementsRequired == 0) { renderer.PopToBefore(MamlElements.developerConceptualDocument); } // Find a unique address in order for AutoOutline to work var attr = (Markdig.Renderers.Html.HtmlAttributes)obj.GetData(typeof(Markdig.Renderers.Html.HtmlAttributes)); string uniqueAddress = attr?.Id; // this header has a user defined address if (string.IsNullOrEmpty(uniqueAddress)) { renderer.HeaderGuids.TryGetValue(obj.Span.Start, out uniqueAddress); // use the guid generated from the hierarchy of titles } if (string.IsNullOrEmpty(uniqueAddress)) { uniqueAddress = Guid.NewGuid().ToString(); // fallback (should not happen): Create Guid } renderer.Push(MamlElements.section, new[] { new KeyValuePair <string, string>("address", uniqueAddress) }); renderer.Push(MamlElements.title); renderer.WriteLeafInline(obj); renderer.EnsureLine(); renderer.PopTo(MamlElements.title); renderer.Push(MamlElements.content); } }