Skip to content

Commit 9015e13

Browse files
committed
Make UseLlmMarkdownRenderer use of static action
1 parent 398b366 commit 9015e13

File tree

3 files changed

+24
-35
lines changed

3 files changed

+24
-35
lines changed

src/Elastic.Markdown/Exporters/LlmMarkdownExporter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ await fileContext.SourceFile.SourceFile.FileSystem.File.WriteAllTextAsync(
6161
}
6262

6363
public static string ConvertToLlmMarkdown(MarkdownDocument document, BuildContext context) =>
64-
DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(context, renderer =>
64+
DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(context, document, static (obj, renderer) =>
6565
{
66-
_ = renderer.Render(document);
66+
_ = renderer.Render(obj);
6767
});
6868

6969
private static IFileInfo GetLlmOutputFile(MarkdownExportFileContext fileContext)

src/Elastic.Markdown/Helpers/DocumentationObjectPoolProvider.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Elastic.Markdown.Myst;
99
using Elastic.Markdown.Myst.Renderers.LlmMarkdown;
1010
using Markdig.Renderers;
11+
using Markdig.Syntax;
1112
using Microsoft.Extensions.ObjectPool;
1213

1314
namespace Elastic.Markdown.Helpers;
@@ -21,13 +22,13 @@ internal static class DocumentationObjectPoolProvider
2122
public static readonly ObjectPool<HtmlRenderSubscription> HtmlRendererPool = PoolProvider.Create(new HtmlRendererPooledObjectPolicy());
2223
private static readonly ObjectPool<LlmMarkdownRenderSubscription> LlmMarkdownRendererPool = PoolProvider.Create(new LlmMarkdownRendererPooledObjectPolicy());
2324

24-
public static string UseLlmMarkdownRenderer(BuildContext buildContext, Action<LlmMarkdownRenderer> action)
25+
public static string UseLlmMarkdownRenderer<TContext>(BuildContext buildContext, TContext context, Action<TContext, LlmMarkdownRenderer> action)
2526
{
2627
var subscription = LlmMarkdownRendererPool.Get();
2728
subscription.SetBuildContext(buildContext);
2829
try
2930
{
30-
action(subscription.LlmMarkdownRenderer);
31+
action(context, subscription.LlmMarkdownRenderer);
3132
return subscription.RentedStringBuilder!.ToString();
3233
}
3334
finally

src/Elastic.Markdown/Myst/Renderers/LlmMarkdown/LlmBlockRenderers.cs

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ public static class LlmRenderingHelpers
2323
{
2424
public static void RenderBlockWithIndentation(LlmMarkdownRenderer renderer, MarkdownObject block, string indentation = " ")
2525
{
26-
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, tempRenderer =>
26+
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, block, static (obj, tmpRenderer) =>
2727
{
28-
_ = tempRenderer.Render(block);
28+
_ = tmpRenderer.Render(obj);
2929
});
3030

3131
if (string.IsNullOrEmpty(content))
@@ -190,11 +190,10 @@ private static string GetContinuationIndent(string baseIndent, bool isOrdered) =
190190

191191
private static void RenderBlockWithIndentation(LlmMarkdownRenderer renderer, Block block, string baseIndent, bool isOrdered)
192192
{
193-
var blockOutput = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, tempRenderer =>
193+
var blockOutput = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, block, static (obj, tmpRenderer) =>
194194
{
195-
_ = tempRenderer.Render(block);
195+
_ = tmpRenderer.Render(obj);
196196
});
197-
198197
var continuationIndent = GetContinuationIndent(baseIndent, isOrdered);
199198
var lines = blockOutput.Split('\n');
200199
for (var i = 0; i < lines.Length; i++)
@@ -287,15 +286,11 @@ protected override void Write(LlmMarkdownRenderer renderer, Table table)
287286
renderer.Writer.Write(" ");
288287

289288
// Capture cell content
290-
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, tempRenderer =>
289+
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, cell.Descendants().OfType<Inline>(), static (obj, tmpRenderer) =>
291290
{
292-
// Render cell content to temporary writer
293-
foreach (var inline in cell.Descendants().OfType<Inline>())
294-
{
295-
tempRenderer.Write(inline);
296-
}
291+
foreach (var inline in obj)
292+
tmpRenderer.Write(inline);
297293
});
298-
299294
// Write padded content
300295
renderer.Writer.Write(content.PadRight(columnWidths[cellIndex]));
301296
renderer.Writer.Write(" |");
@@ -325,13 +320,10 @@ protected override void Write(LlmMarkdownRenderer renderer, Table table)
325320
renderer.Writer.Write(" ");
326321

327322
// Capture cell content
328-
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, tempRenderer =>
323+
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, cell.Descendants().OfType<Inline>(), static (obj, tmpRenderer) =>
329324
{
330-
// Render cell content to temporary writer
331-
foreach (var inline in cell.Descendants().OfType<Inline>())
332-
{
333-
tempRenderer.Write(inline);
334-
}
325+
foreach (var inline in obj)
326+
tmpRenderer.Write(inline);
335327
});
336328

337329
// Write padded content
@@ -364,13 +356,10 @@ private static int[] CalculateColumnWidths(LlmMarkdownRenderer renderer, Table t
364356
foreach (var cell in row.Cast<TableCell>())
365357
{
366358
// Capture cell content
367-
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, tempRenderer =>
359+
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, cell.Descendants().OfType<Inline>(), static (obj, tmpRenderer) =>
368360
{
369-
// Render cell content to temporary writer
370-
foreach (var inline in cell.Descendants().OfType<Inline>())
371-
{
372-
tempRenderer.Write(inline);
373-
}
361+
foreach (var inline in obj)
362+
tmpRenderer.Write(inline);
374363
});
375364

376365
// Update width if this cell is wider
@@ -494,15 +483,15 @@ private void WriteIncludeBlock(LlmMarkdownRenderer renderer, IncludeBlock block)
494483
private static void WriteChildrenWithIndentation(LlmMarkdownRenderer renderer, Block container, string indent)
495484
{
496485
// Capture output and manually add indentation
497-
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, tempRenderer =>
486+
var content = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, container, static (obj, tmpRenderer) =>
498487
{
499-
switch (container)
488+
switch (obj)
500489
{
501490
case ContainerBlock containerBlock:
502-
tempRenderer.WriteChildren(containerBlock);
491+
tmpRenderer.WriteChildren(containerBlock);
503492
break;
504493
case LeafBlock leafBlock:
505-
tempRenderer.WriteLeafInline(leafBlock);
494+
tmpRenderer.WriteLeafInline(leafBlock);
506495
break;
507496
}
508497
});
@@ -538,11 +527,10 @@ protected override void Write(LlmMarkdownRenderer renderer, DefinitionItem obj)
538527

539528
private static string GetPlainTextFromLeafBlock(LlmMarkdownRenderer renderer, LeafBlock leafBlock)
540529
{
541-
var markdownText = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, tempRenderer =>
530+
var markdownText = DocumentationObjectPoolProvider.UseLlmMarkdownRenderer(renderer.BuildContext, leafBlock, static (obj, tmpRenderer) =>
542531
{
543-
tempRenderer.WriteLeafInline(leafBlock);
532+
tmpRenderer.WriteLeafInline(obj);
544533
});
545-
546534
return markdownText.StripMarkdown();
547535
}
548536
}

0 commit comments

Comments
 (0)