diff options
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/main/kotlin/Formats/StructuredFormatService.kt | 20 | ||||
-rw-r--r-- | core/src/test/kotlin/format/MarkdownFormatTest.kt | 27 |
2 files changed, 34 insertions, 13 deletions
diff --git a/core/src/main/kotlin/Formats/StructuredFormatService.kt b/core/src/main/kotlin/Formats/StructuredFormatService.kt index a7b696eb..419e5eeb 100644 --- a/core/src/main/kotlin/Formats/StructuredFormatService.kt +++ b/core/src/main/kotlin/Formats/StructuredFormatService.kt @@ -368,11 +368,19 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } } - protected fun platformsOfItems(items: List<DocumentationNode>): Set<String> = - items.foldRight(items.first().platformsToShow.toSet()) { - node, platforms -> - platforms.intersect(node.platformsToShow) + protected fun platformsOfItems(items: List<DocumentationNode>): Set<String> { + val platforms = items.asSequence().map { + when (it.kind) { + NodeKind.ExternalClass, NodeKind.Package, NodeKind.Module -> platformsOfItems(it.members) + else -> it.platformsToShow.toSet() } + } + // Calculating common platforms for items + return platforms.fold(platforms.first()) { + result, platforms -> + result.intersect(platforms) + } + } val DocumentationNode.platformsToShow: List<String> get() = platforms.let { if (it.containsAll(impliedPlatforms)) it - impliedPlatforms else it } @@ -498,7 +506,9 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, appendIndexRow(platforms) { appendTableCell { appendLink(memberLocation) - appendPlatforms(platforms) + if (members.singleOrNull()?.kind != NodeKind.ExternalClass) { + appendPlatforms(platforms) + } } appendTableCell { val breakdownBySummary = members.groupBy { it.summary } diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt index cdb55cba..04c2dc62 100644 --- a/core/src/test/kotlin/format/MarkdownFormatTest.kt +++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt @@ -288,17 +288,20 @@ class MarkdownFormatTest { } } - @Test fun multiplePlatformsPackagePlatformFromMembersIndex() { - val module = buildMultiplePlatforms("multiplatform/packagePlatformsFromMembers") - verifyModelOutput(module, ".md", "testdata/format/multiplatform/packagePlatformsFromMembers/multiplatform.index.kt") { - model, output -> - MarkdownFormatService(InMemoryLocationService, KotlinLanguageService(), listOf()) - .createOutputBuilder(output, tempLocation).appendNodes(listOf(model)) - } + @Test fun packagePlatformsWithExtExtensions() { + val path = "multiplatform/packagePlatformsWithExtExtensions" + val module = DocumentationModule("test") + val options = DocumentationOptions("", "html", generateIndexPages = false) + appendDocumentation(module, contentRootFromPath("testdata/format/$path/jvm.kt"), defaultPlatforms = listOf("JVM"), withKotlinRuntime = true, options = options) + verifyMultiplatformIndex(module, path) + verifyMultiplatformPackage(module, path) } @Test fun multiplePlatformsPackagePlatformFromMembers() { - verifyMultiplatformPackage(buildMultiplePlatforms("multiplatform/packagePlatformsFromMembers"), "multiplatform/packagePlatformsFromMembers") + val path = "multiplatform/packagePlatformsFromMembers" + val module = buildMultiplePlatforms(path) + verifyMultiplatformIndex(module, path) + verifyMultiplatformPackage(module, path) } private fun buildMultiplePlatforms(path: String): DocumentationModule { @@ -315,6 +318,14 @@ class MarkdownFormatTest { } } + private fun verifyMultiplatformIndex(module: DocumentationModule, path: String) { + verifyModelOutput(module, ".md", "testdata/format/$path/multiplatform.index.kt") { + model, output -> + MarkdownFormatService(InMemoryLocationService, KotlinLanguageService(), listOf()) + .createOutputBuilder(output, tempLocation).appendNodes(listOf(model)) + } + } + @Test fun blankLineInsideCodeBlock() { verifyMarkdownNode("blankLineInsideCodeBlock") } |