Skip to content

Commit 408c009

Browse files
authored
Better approach to set the title on directives in LLM markdown output (#1596)
* Set interface ITitledBlock on blocks that have a Title property and use that in LlmDirectiveRenderer * Skip rendering the title for note, tip, warning and important admonitions * Remove commented code * Rename to IBlockTitle
1 parent e67b879 commit 408c009

File tree

5 files changed

+14
-13
lines changed

5 files changed

+14
-13
lines changed

src/Elastic.Markdown/Myst/Directives/Admonition/AdmonitionBlock.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Elastic.Markdown.Myst.Directives.Admonition;
88

99
public class DropdownBlock(DirectiveBlockParser parser, ParserContext context) : AdmonitionBlock(parser, "dropdown", context);
1010

11-
public class AdmonitionBlock : DirectiveBlock
11+
public class AdmonitionBlock : DirectiveBlock, IBlockTitle
1212
{
1313
public AdmonitionBlock(DirectiveBlockParser parser, string admonition, ParserContext context) : base(parser, context)
1414
{
@@ -45,5 +45,3 @@ public override void FinalizeAndValidate(ParserContext context)
4545
Title = Title.ReplaceSubstitutions(context);
4646
}
4747
}
48-
49-

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313

1414
namespace Elastic.Markdown.Myst.Directives;
1515

16+
public interface IBlockTitle
17+
{
18+
string Title { get; }
19+
}
20+
1621
public interface IBlockExtension : IBlock
1722
{
1823
BuildContext Build { get; }

src/Elastic.Markdown/Myst/Directives/Stepper/StepperBlock.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public override void FinalizeAndValidate(ParserContext context)
1616
}
1717
}
1818

19-
public class StepBlock(DirectiveBlockParser parser, ParserContext context) : DirectiveBlock(parser, context)
19+
public class StepBlock(DirectiveBlockParser parser, ParserContext context) : DirectiveBlock(parser, context), IBlockTitle
2020
{
2121
public override string Directive => "step";
2222
public string Title { get; private set; } = string.Empty;

src/Elastic.Markdown/Myst/Directives/Tabs/TabSetBlock.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public int FindIndex()
3333
}
3434

3535
public class TabItemBlock(DirectiveBlockParser parser, ParserContext context)
36-
: DirectiveBlock(parser, context)
36+
: DirectiveBlock(parser, context), IBlockTitle
3737
{
3838
public override string Directive => "tab-item";
3939

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using Elastic.Markdown.Myst.Directives.Admonition;
99
using Elastic.Markdown.Myst.Directives.Image;
1010
using Elastic.Markdown.Myst.Directives.Include;
11-
using Elastic.Markdown.Myst.Directives.Tabs;
1211
using Markdig.Extensions.DefinitionLists;
1312
using Markdig.Extensions.Tables;
1413
using Markdig.Extensions.Yaml;
@@ -384,14 +383,13 @@ protected override void Write(LlmMarkdownRenderer renderer, DirectiveBlock obj)
384383

385384
switch (obj)
386385
{
387-
case DropdownBlock dropdown:
388-
renderer.Writer.Write($" title=\"{dropdown.Title}\"");
386+
case AdmonitionBlock when obj.Directive
387+
is "note" or "tip" or "warning" or "important":
388+
// skip for these directives
389+
// otherwise it will render as <note title="Note">
389390
break;
390-
case TabItemBlock tabItem:
391-
renderer.Writer.Write($" title=\"{tabItem.Title}\"");
392-
break;
393-
case AdmonitionBlock admonition when obj.Directive is "admonition":
394-
renderer.Writer.Write($" title=\"{admonition.Title}\"");
391+
case IBlockTitle titledBlock:
392+
renderer.Writer.Write($" title=\"{titledBlock.Title}\"");
395393
break;
396394
}
397395

0 commit comments

Comments
 (0)