diff --git a/src/Elastic.Markdown/IO/MarkdownFile.cs b/src/Elastic.Markdown/IO/MarkdownFile.cs index e5fc0725..c1089815 100644 --- a/src/Elastic.Markdown/IO/MarkdownFile.cs +++ b/src/Elastic.Markdown/IO/MarkdownFile.cs @@ -162,8 +162,8 @@ private void ReadDocumentInstructions(MarkdownDocument document) } var contents = document - .Where(block => block is HeadingBlock { Level: >= 2 }) - .Cast() + .Descendants() + .Where(block => block is { Level: >= 2 }) .Select(h => (h.GetData("header") as string, h.GetData("anchor") as string)) .Select(h => new PageTocItem { diff --git a/tests/Elastic.Markdown.Tests/Inline/AnchorLinkTests.cs b/tests/Elastic.Markdown.Tests/Inline/AnchorLinkTests.cs index 647ab278..d3a935fa 100644 --- a/tests/Elastic.Markdown.Tests/Inline/AnchorLinkTests.cs +++ b/tests/Elastic.Markdown.Tests/Inline/AnchorLinkTests.cs @@ -34,6 +34,13 @@ protected override void AddToFileSystem(MockFileSystem fileSystem) ## New Requirements [#new-reqs] + +:::{dropdown} Nested heading + +##### Heading inside dropdown [#heading-inside-dropdown] + +::: + These are new requirements """; fileSystem.AddFile(@"docs/testing/req.md", inclusion); @@ -147,3 +154,21 @@ public void GeneratesHtml() => public void HasError() => Collector.Diagnostics.Should().HaveCount(1) .And.Contain(d => d.Message.Contains("`sub-requirements2` does not exist")); } + + +public class NestedHeadingTest(ITestOutputHelper output) : AnchorLinkTestBase(output, + """ + [Heading inside dropdown](testing/req.md#heading-inside-dropdown) + """ +) +{ + [Fact] + public void GeneratesHtml() => + // language=html + Html.Should().Contain( + """Heading inside dropdown""" + ); + + [Fact] + public void HasError() => Collector.Diagnostics.Should().HaveCount(0); +}