From 86dc24cc719ae7ac0083ba9cd57e509817707c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Sat, 14 Mar 2026 20:21:44 +0100 Subject: [PATCH] feat(renderer): Move extension functions into the 'Properties' or 'Functions' sections of their receiver --- .../src/commonMain/kotlin/Example.kt | 5 ++++ .../src/commonMain/kotlin/sub1/ExampleExt.kt | 18 +++++++++++++ .../kotlin/MethodGroupingTransformer.kt | 27 ++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 docs/example/example-core/src/commonMain/kotlin/sub1/ExampleExt.kt diff --git a/docs/example/example-core/src/commonMain/kotlin/Example.kt b/docs/example/example-core/src/commonMain/kotlin/Example.kt index 7fd34ad..de910b3 100644 --- a/docs/example/example-core/src/commonMain/kotlin/Example.kt +++ b/docs/example/example-core/src/commonMain/kotlin/Example.kt @@ -125,3 +125,8 @@ typealias ExampleAlias = Example */ @Suppress("RedundantSuspendModifier") suspend inline fun ExampleAlias.foo2(): T = TODO() + +/** + * Extension property for [ExampleAlias]. + */ +val ExampleAlias.prop2: String get() = "prop2" diff --git a/docs/example/example-core/src/commonMain/kotlin/sub1/ExampleExt.kt b/docs/example/example-core/src/commonMain/kotlin/sub1/ExampleExt.kt new file mode 100644 index 0000000..655d2f2 --- /dev/null +++ b/docs/example/example-core/src/commonMain/kotlin/sub1/ExampleExt.kt @@ -0,0 +1,18 @@ +package opensavvy.dokka.material.mkdocs.example.sub1 + +import opensavvy.dokka.material.mkdocs.example.ExampleAlias + +/** + * Extension function for [ExampleAlias]. + * + * This extension is not in the same package as [ExampleAlias], so it should remain as a standalone page. + */ +@Suppress("RedundantSuspendModifier") +suspend inline fun ExampleAlias.foo3(): T = TODO() + +/** + * Extension property for [ExampleAlias]. + * + * This extension is not in the same package as [ExampleAlias], so it should remain as a standalone page. + */ +val ExampleAlias.prop3: String get() = "prop3" diff --git a/renderer/src/jvmMain/kotlin/MethodGroupingTransformer.kt b/renderer/src/jvmMain/kotlin/MethodGroupingTransformer.kt index b0c79e6..4f675f4 100644 --- a/renderer/src/jvmMain/kotlin/MethodGroupingTransformer.kt +++ b/renderer/src/jvmMain/kotlin/MethodGroupingTransformer.kt @@ -7,6 +7,7 @@ import org.jetbrains.dokka.transformers.pages.PageTransformer class MethodGroupingTransformer : PageTransformer { override fun invoke(input: RootPageNode): RootPageNode { val driToPage = mutableMapOf() + val allMergedPages = mutableSetOf() // 1. Collect all member pages input.transformContentPagesTree { page -> @@ -20,6 +21,7 @@ class MethodGroupingTransformer : PageTransformer { return input.transformContentPagesTree { page -> if (page is ClasslikePageNode) { + val classDRI = page.dri.firstOrNull() ?: return@transformContentPagesTree page val alreadyMerged = mutableSetOf() // 2. Replace summary rows with full member content val newContent = page.content.recursiveMapTransform { table -> @@ -29,9 +31,10 @@ class MethodGroupingTransformer : PageTransformer { if (row is ContentGroup) { val dri = row.findDRI() val memberPage = dri?.let { driToPage[it] } - if (memberPage != null) { + if (memberPage != null && dri.packageName == classDRI.packageName) { if (memberPage !in alreadyMerged) { alreadyMerged.add(memberPage) + allMergedPages.add(memberPage) row.copy( children = memberPage.content.children.map { it.demoteHeaders(2) } ) @@ -60,6 +63,28 @@ class MethodGroupingTransformer : PageTransformer { } else { page } + }.transformContentPagesTree { page -> + if (page is PackagePageNode) { + val newContent = page.content.recursiveMapTransform { table -> + if (table.dci.kind in listOf(ContentKind.Functions, ContentKind.Properties)) { + table.copy( + children = table.children.filter { row -> + val dri = row.findDRI() + val memberPage = dri?.let { driToPage[it] } + memberPage == null || memberPage !in allMergedPages + } + ) + } else { + table + } + } + page.modified( + content = newContent as ContentGroup, + children = page.children.filterNot { it in allMergedPages } + ) + } else { + page + } } } -- 2.51.2