Skip to content

Commit 8fb3ede

Browse files
authored
Temporary fix for rendering code blocks that look like lists (#87)
1 parent 066040d commit 8fb3ede

File tree

2 files changed

+48
-19
lines changed

2 files changed

+48
-19
lines changed

src/Elastic.Markdown/Myst/Directives/DirectiveBlockParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ protected override DirectiveBlock CreateFencedBlock(BlockProcessor processor)
7373
if (processor.Context is not ParserContext context)
7474
throw new Exception("Expected parser context to be of type ParserContext");
7575

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

7979
// TODO alternate lookup .NET 9

src/Elastic.Markdown/Myst/Directives/DirectiveHtmlRenderer.cs

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ private void WriteImage(HtmlRenderer renderer, ImageBlock block)
8181
{
8282
var imageUrl =
8383
block.ImageUrl != null &&
84-
(block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
85-
? $"{block.Build.UrlPathPrefix}/{block.ImageUrl.TrimStart('/')}"
86-
: block.ImageUrl;
84+
(block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
85+
? $"{block.Build.UrlPathPrefix}/{block.ImageUrl.TrimStart('/')}"
86+
: block.ImageUrl;
8787
var slice = Image.Create(new ImageViewModel
8888
{
8989
Label = block.Label,
@@ -100,7 +100,8 @@ private void WriteImage(HtmlRenderer renderer, ImageBlock block)
100100

101101
private void WriteFigure(HtmlRenderer renderer, ImageBlock block)
102102
{
103-
var imageUrl = block.ImageUrl != null && (block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
103+
var imageUrl = block.ImageUrl != null &&
104+
(block.ImageUrl.StartsWith("/_static") || block.ImageUrl.StartsWith("_static"))
104105
? $"{block.Build.UrlPathPrefix}/{block.ImageUrl.TrimStart('/')}"
105106
: block.ImageUrl;
106107
var slice = Slices.Directives.Figure.Create(new ImageViewModel
@@ -161,7 +162,7 @@ private void WriteCode(HtmlRenderer renderer, CodeBlock block)
161162
{
162163
CrossReferenceName = block.CrossReferenceName, Language = block.Language, Caption = block.Caption
163164
});
164-
RenderRazorSlice(slice, renderer, block);
165+
RenderRazorSliceRawContent(slice, renderer, block);
165166
}
166167

167168

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

180181
private void WriteTabItem(HtmlRenderer renderer, TabItemBlock block)
181182
{
182-
var slice = TabItem.Create(new TabItemViewModel { Index = block.Index, Title = block.Title, TabSetIndex = block.TabSetIndex });
183+
var slice = TabItem.Create(new TabItemViewModel
184+
{
185+
Index = block.Index, Title = block.Title, TabSetIndex = block.TabSetIndex
186+
});
183187
RenderRazorSlice(slice, renderer, block);
184188
}
185189

@@ -200,15 +204,15 @@ private void WriteLiteralIncludeBlock(HtmlRenderer renderer, IncludeBlock block)
200204
});
201205
RenderRazorSlice(slice, renderer, content);
202206
}
203-
204207
}
205208

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

211-
var parser = new MarkdownParser(block.DocumentationSourcePath, block.Build, block.GetMarkdownFile, block.Configuration);
214+
var parser = new MarkdownParser(block.DocumentationSourcePath, block.Build, block.GetMarkdownFile,
215+
block.Configuration);
212216
var file = block.FileSystem.FileInfo.New(block.IncludePath);
213217
var document = parser.ParseAsync(file, block.FrontMatter, default).GetAwaiter().GetResult();
214218
var html = document.ToHtml(parser.Pipeline);
@@ -241,22 +245,47 @@ private static void RenderRazorSliceRawContent<T>(RazorSlice<T> slice, HtmlRende
241245
var blocks = html.Split("[CONTENT]", 2, StringSplitOptions.RemoveEmptyEntries);
242246
renderer.Write(blocks[0]);
243247
foreach (var o in obj)
248+
Render(o);
249+
250+
renderer.Write(blocks[1]);
251+
252+
void RenderLeaf(LeafBlock p)
253+
{
254+
renderer.WriteLeafRawLines(p, true, false, false);
255+
renderer.EnableHtmlForInline = false;
256+
foreach (var oo in p.Inline ?? [])
257+
{
258+
if (oo is LiteralInline li)
259+
renderer.Write(li);
260+
if (oo is LineBreakInline)
261+
renderer.WriteLine();
262+
}
263+
264+
renderer.EnableHtmlForInline = true;
265+
}
266+
267+
void RenderListBlock(ListBlock l)
244268
{
245-
if (o is ParagraphBlock p)
269+
foreach (var bb in l)
246270
{
247-
renderer.WriteLeafRawLines(p, true, false, false);
248-
renderer.EnableHtmlForInline = false;
249-
foreach (var oo in p.Inline ?? [])
271+
if (bb is LeafBlock lbi)
272+
RenderLeaf(lbi);
273+
else if (bb is ListItemBlock ll)
250274
{
251-
if (oo is LiteralInline li)
252-
renderer.Write(li);
253-
if (oo is LineBreakInline)
254-
renderer.WriteLine();
275+
renderer.Write(ll.TriviaBefore);
276+
renderer.Write("-");
277+
foreach (var lll in ll)
278+
Render(lll);
255279
}
256-
renderer.EnableHtmlForInline = true;
257280
}
258281
}
259282

260-
renderer.Write(blocks[1]);
283+
void Render(Block o)
284+
{
285+
if (o is LeafBlock p)
286+
RenderLeaf(p);
287+
else if (o is ListBlock l)
288+
RenderListBlock(l);
289+
}
261290
}
262291
}

0 commit comments

Comments
 (0)