Skip to content

Commit

Permalink
Temporary fix for rendering code blocks that look like lists (#87)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mpdreamz authored Nov 21, 2024
1 parent 066040d commit 8fb3ede
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 19 deletions.
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);
}
}
}

0 comments on commit 8fb3ede

Please sign in to comment.