protected override void Write(BlazorRenderer renderer, YamlFrontMatterBlock yaml)
 {
     renderer.OpenElement("div");
     renderer.AddAttribute("class", "yaml");
     renderer.WriteLeafRawLines(yaml);
     renderer.CloseElement();
 }
Exemple #2
0
 protected override void Write(BlazorRenderer renderer, AutolinkInline autolink)
 {
     renderer.OpenElement("a");
     renderer.AddAttribute("href", autolink.IsEmail ? $"mailto:{autolink.Url}" : autolink.Url);
     renderer.WriteAttributes(autolink);
     renderer.CloseElement();
 }
Exemple #3
0
        protected override void Write(BlazorRenderer renderer, FootnoteGroup footnotes)
        {
            renderer.OpenElement("div");
            renderer.AddAttribute("class", "footnotes");
            renderer.AddMarkupContent("<hr />");
            renderer.OpenElement("ol");

            for (int i = 0; i < footnotes.Count; i++)
            {
                var footnote = (Footnote)footnotes[i];
                renderer.OpenElement("li");
                renderer.AddAttribute("id", $"fn:{footnote.Order}");
                renderer.WriteChildren(footnote);
                renderer.CloseElement();
            }

            renderer.CloseElement();
            renderer.CloseElement();
        }
        protected override void Write(BlazorRenderer renderer, FootnoteLink link)
        {
            renderer.OpenElement("a");

            if (link.IsBackLink)
            {
                renderer.AddAttribute("class", "footnote-back-ref");
                renderer.AddAttribute("href", $"#fnref:{link.Index}");
                renderer.AddContent("&#8617;");
            }
            else
            {
                var order = link.Footnote.Order;
                renderer.AddAttribute("id", $"#fnref:{link.Index}");
                renderer.AddAttribute("class", "footnote-ref");
                renderer.AddAttribute("href", $"#fn:{order}");
                renderer.AddMarkupContent($"<sup>{order}</sup>");
            }

            renderer.CloseElement();
        }
Exemple #5
0
        protected override void Write(BlazorRenderer renderer, LinkInline link)
        {
            var url = link.GetDynamicUrl != null?link.GetDynamicUrl() ?? link.Url : link.Url;

            if (link.IsImage)
            {
                renderer.OpenElement("img");
                renderer.AddAttribute("src", url);
            }
            else
            {
                renderer.OpenElement("a");
                renderer.AddAttribute("href", url);
            }

            if (!string.IsNullOrEmpty(link.Title))
            {
                renderer.AddAttribute("title", link.Title);
            }

            renderer.WriteAttributes(link);
            renderer.WriteChildren(link);
            renderer.CloseElement();
        }
Exemple #6
0
        protected override void Write(BlazorRenderer renderer, Table table)
        {
            renderer.OpenElement("table");

            if (table.ColumnDefinitions.Any(cd => cd.Width > 0 && cd.Width < 1))
            {
                foreach (var tableColumnDefinition in table.ColumnDefinitions)
                {
                    var width      = Math.Round(tableColumnDefinition.Width * 100) / 100;
                    var widthValue = string.Format(CultureInfo.InvariantCulture, "{0:0.##}", width);
                    renderer.OpenElement("col");
                    renderer.AddAttribute("style", $"style=\"width:{widthValue}%\"");
                    renderer.CloseElement();
                }
            }

            bool bodyWritten   = false;
            bool headerWritten = false;

            foreach (var rowObj in table)
            {
                var row = (TableRow)rowObj;

                if (row.IsHeader)
                {
                    if (!headerWritten)
                    {
                        renderer.OpenElement("thead");
                        headerWritten = true;
                    }
                }
                else if (!bodyWritten)
                {
                    if (headerWritten)
                    {
                        renderer.CloseElement();
                    }

                    renderer.OpenElement("tbody");
                    bodyWritten = true;
                }

                renderer.OpenElement("tr");
                renderer.WriteAttributes(row);

                for (int i = 0; i < row.Count; i++)
                {
                    var cell = (TableCell)row[i];
                    renderer.OpenElement(row.IsHeader ? "th" : "td");

                    if (cell.ColumnSpan != 1)
                    {
                        renderer.AddAttribute("colspan", cell.ColumnSpan);
                    }

                    if (cell.RowSpan != 1)
                    {
                        renderer.AddAttribute("rowspan", cell.RowSpan);
                    }

                    if (table.ColumnDefinitions.Count > 0)
                    {
                        var columnIndex = cell.ColumnIndex < 0 || cell.ColumnIndex >= table.ColumnDefinitions.Count ? i : cell.ColumnIndex;
                        columnIndex = columnIndex >= table.ColumnDefinitions.Count ? table.ColumnDefinitions.Count - 1 : columnIndex;

                        var alignment = table.ColumnDefinitions[columnIndex].Alignment;

                        if (alignment.HasValue)
                        {
                            switch (alignment)
                            {
                            case TableColumnAlign.Center:
                                renderer.AddAttribute("style", "text-align:center;");
                                break;

                            case TableColumnAlign.Left:
                                renderer.AddAttribute("style", "text-align:left;");
                                break;

                            case TableColumnAlign.Right:
                                renderer.AddAttribute("style", "text-align:right;");
                                break;
                            }
                        }

                        renderer.WriteAttributes(cell);
                        renderer.Write(cell);
                    }

                    renderer.CloseElement();
                }

                renderer.CloseElement();
            }

            if (bodyWritten)
            {
                renderer.CloseElement();
            }

            renderer.CloseElement();
        }