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 + } } }