Exemple #1
0
        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);
        }
Exemple #2
0
        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);
 }
Exemple #4
0
        protected override void Write(MamlRenderer renderer, QuoteBlock obj)
        {
            renderer.EnsureLine();

            renderer.Push(MamlElements.quote);
            renderer.WriteChildren(obj);
            renderer.PopTo(MamlElements.quote);
        }
Exemple #5
0
        protected override void Write(MamlRenderer renderer, CodeBlock obj)
        {
            renderer.EnsureLine();

            renderer.Push(MamlElements.code);
            renderer.WriteLeafRawLines(obj, true, true);
            renderer.PopTo(MamlElements.code);
        }
Exemple #6
0
        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);
            }
        }