Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ protected override DirectiveBlock CreateFencedBlock(BlockProcessor processor)
if (processor.Context is not ParserContext context)
throw new Exception("Expected parser context to be of type ParserContext");

if (info.IndexOf("{") == -1)
if (info.IndexOf("{") == -1)
return new CodeBlock(this, "raw", _admonitionData);

// TODO alternate lookup .NET 9
Expand Down
65 changes: 47 additions & 18 deletions src/Elastic.Markdown/Myst/Directives/DirectiveHtmlRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ private void WriteImage(HtmlRenderer renderer, ImageBlock block)
{
var imageUrl =
block.ImageUrl != null &&
(block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
? $"{block.Build.UrlPathPrefix}/{block.ImageUrl.TrimStart('/')}"
: block.ImageUrl;
(block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
? $"{block.Build.UrlPathPrefix}/{block.ImageUrl.TrimStart('/')}"
: block.ImageUrl;
var slice = Image.Create(new ImageViewModel
{
Label = block.Label,
Expand All @@ -100,7 +100,8 @@ private void WriteImage(HtmlRenderer renderer, ImageBlock block)

private void WriteFigure(HtmlRenderer renderer, ImageBlock block)
{
var imageUrl = block.ImageUrl != null && (block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
var imageUrl = block.ImageUrl != null &&
(block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
? $"{block.Build.UrlPathPrefix}/{block.ImageUrl.TrimStart('/')}"
: block.ImageUrl;
var slice = Slices.Directives.Figure.Create(new ImageViewModel
Expand Down Expand Up @@ -161,7 +162,7 @@ private void WriteCode(HtmlRenderer renderer, CodeBlock block)
{
CrossReferenceName = block.CrossReferenceName, Language = block.Language, Caption = block.Caption
});
RenderRazorSlice(slice, renderer, block);
RenderRazorSliceRawContent(slice, renderer, block);
}


Expand All @@ -179,7 +180,10 @@ private void WriteMermaid(HtmlRenderer renderer, MermaidBlock block)

private void WriteTabItem(HtmlRenderer renderer, TabItemBlock block)
{
var slice = TabItem.Create(new TabItemViewModel { Index = block.Index, Title = block.Title, TabSetIndex = block.TabSetIndex });
var slice = TabItem.Create(new TabItemViewModel
{
Index = block.Index, Title = block.Title, TabSetIndex = block.TabSetIndex
});
RenderRazorSlice(slice, renderer, block);
}

Expand All @@ -200,15 +204,15 @@ private void WriteLiteralIncludeBlock(HtmlRenderer renderer, IncludeBlock block)
});
RenderRazorSlice(slice, renderer, content);
}

}

private void WriteIncludeBlock(HtmlRenderer renderer, IncludeBlock block)
{
if (!block.Found || block.IncludePath is null)
return;

var parser = new MarkdownParser(block.DocumentationSourcePath, block.Build, block.GetMarkdownFile, block.Configuration);
var parser = new MarkdownParser(block.DocumentationSourcePath, block.Build, block.GetMarkdownFile,
block.Configuration);
var file = block.FileSystem.FileInfo.New(block.IncludePath);
var document = parser.ParseAsync(file, block.FrontMatter, default).GetAwaiter().GetResult();
var html = document.ToHtml(parser.Pipeline);
Expand Down Expand Up @@ -241,22 +245,47 @@ private static void RenderRazorSliceRawContent<T>(RazorSlice<T> slice, HtmlRende
var blocks = html.Split("[CONTENT]", 2, StringSplitOptions.RemoveEmptyEntries);
renderer.Write(blocks[0]);
foreach (var o in obj)
Render(o);

renderer.Write(blocks[1]);

void RenderLeaf(LeafBlock p)
{
renderer.WriteLeafRawLines(p, true, false, false);
renderer.EnableHtmlForInline = false;
foreach (var oo in p.Inline ?? [])
{
if (oo is LiteralInline li)
renderer.Write(li);
if (oo is LineBreakInline)
renderer.WriteLine();
}

renderer.EnableHtmlForInline = true;
}

void RenderListBlock(ListBlock l)
{
if (o is ParagraphBlock p)
foreach (var bb in l)
{
renderer.WriteLeafRawLines(p, true, false, false);
renderer.EnableHtmlForInline = false;
foreach (var oo in p.Inline ?? [])
if (bb is LeafBlock lbi)
RenderLeaf(lbi);
else if (bb is ListItemBlock ll)
{
if (oo is LiteralInline li)
renderer.Write(li);
if (oo is LineBreakInline)
renderer.WriteLine();
renderer.Write(ll.TriviaBefore);
renderer.Write("-");
foreach (var lll in ll)
Render(lll);
}
renderer.EnableHtmlForInline = true;
}
}

renderer.Write(blocks[1]);
void Render(Block o)
{
if (o is LeafBlock p)
RenderLeaf(p);
else if (o is ListBlock l)
RenderListBlock(l);
}
}
}