diff options
author | Simon Ogorodnik <Simon.Ogorodnik@jetbrains.com> | 2017-02-27 21:27:37 +0300 |
---|---|---|
committer | Simon Ogorodnik <Simon.Ogorodnik@jetbrains.com> | 2017-02-27 21:27:37 +0300 |
commit | d43d47b9486bbd7e926cf1a3fc6372f2a457a5e5 (patch) | |
tree | 925229bac0b49943f38766d07802026beed11910 /core/src/main/kotlin | |
parent | 05c5a8f20167b652f918e8260fd16453efadf5ff (diff) | |
parent | bc71b31be28ed558e022babcf40ec1fd3bff923a (diff) | |
download | dokka-d43d47b9486bbd7e926cf1a3fc6372f2a457a5e5.tar.gz dokka-d43d47b9486bbd7e926cf1a3fc6372f2a457a5e5.tar.bz2 dokka-d43d47b9486bbd7e926cf1a3fc6372f2a457a5e5.zip |
Merge branch 'semoro/multiplatform'
Diffstat (limited to 'core/src/main/kotlin')
-rw-r--r-- | core/src/main/kotlin/Formats/KotlinWebsiteFormatService.kt | 2 | ||||
-rw-r--r-- | core/src/main/kotlin/Formats/StructuredFormatService.kt | 31 |
2 files changed, 24 insertions, 9 deletions
diff --git a/core/src/main/kotlin/Formats/KotlinWebsiteFormatService.kt b/core/src/main/kotlin/Formats/KotlinWebsiteFormatService.kt index 6366ff61..0444a25a 100644 --- a/core/src/main/kotlin/Formats/KotlinWebsiteFormatService.kt +++ b/core/src/main/kotlin/Formats/KotlinWebsiteFormatService.kt @@ -148,7 +148,7 @@ open class KotlinWebsiteOutputBuilder(to: StringBuilder, override fun appendIndexRow(platforms: Set<String>, block: () -> Unit) { if (platforms.isNotEmpty()) - wrap("<tr data-platform=\"${platforms.joinToString(" ")}\">", "</tr>", block) + wrap("<tr data-platform=\"${platforms.joinToString()}\">", "</tr>", block) else appendTableRow(block) } diff --git a/core/src/main/kotlin/Formats/StructuredFormatService.kt b/core/src/main/kotlin/Formats/StructuredFormatService.kt index b5a35356..a7b696eb 100644 --- a/core/src/main/kotlin/Formats/StructuredFormatService.kt +++ b/core/src/main/kotlin/Formats/StructuredFormatService.kt @@ -263,6 +263,7 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, val packageName = if (singleNode.name.isEmpty()) "<root>" else singleNode.name appendHeader(2) { appendText("Package $packageName") } } + singleNode.appendPlatforms() appendContent(singleNode.content) } else { val breakdownByName = nodes.groupBy { node -> node.name } @@ -354,13 +355,25 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } private fun DocumentationNode.appendPlatforms() { - val platforms = platformsToShow.ifEmpty { return } + val platforms = if (isModuleOrPackage()) + platformsToShow.toSet() + platformsOfItems(members) + else + platformsToShow + + if(platforms.isEmpty()) return + appendParagraph { appendStrong { to.append("Platform and version requirements:") } to.append(" " + platforms.joinToString()) } } + protected fun platformsOfItems(items: List<DocumentationNode>): Set<String> = + items.foldRight(items.first().platformsToShow.toSet()) { + node, platforms -> + platforms.intersect(node.platformsToShow) + } + val DocumentationNode.platformsToShow: List<String> get() = platforms.let { if (it.containsAll(impliedPlatforms)) it - impliedPlatforms else it } @@ -408,7 +421,7 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, return } - appendSection("Packages", node.members(NodeKind.Package)) + appendSection("Packages", node.members(NodeKind.Package), platformsBasedOnMembers = true) appendSection("Types", node.members.filter { it.kind in NodeKind.classLike && it.kind != NodeKind.TypeAlias && it.kind != NodeKind.AnnotationClass && it.kind != NodeKind.Exception }) appendSection("Annotations", node.members(NodeKind.AnnotationClass)) appendSection("Exceptions", node.members(NodeKind.Exception)) @@ -463,7 +476,8 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, private fun appendSection(caption: String, members: List<DocumentationNode>, sortMembers: Boolean = true, - omitSamePlatforms: Boolean = false) { + omitSamePlatforms: Boolean = false, + platformsBasedOnMembers: Boolean = false) { if (members.isEmpty()) return appendHeader(3) { appendText(caption) } @@ -476,7 +490,11 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, appendTable("Name", "Summary") { appendTableBody { for ((memberLocation, members) in membersMap) { - val platforms = platformsOfItems(members, omitSamePlatforms) + val elementPlatforms = platformsOfItems(members, omitSamePlatforms) + val platforms = if (platformsBasedOnMembers) + members.flatMapTo(mutableSetOf()) { platformsOfItems(it.members) } + elementPlatforms + else + elementPlatforms appendIndexRow(platforms) { appendTableCell { appendLink(memberLocation) @@ -496,10 +514,7 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } private fun platformsOfItems(items: List<DocumentationNode>, omitSamePlatforms: Boolean = true): Set<String> { - val platforms = items.foldRight(items.first().platformsToShow.toSet()) { - node, platforms -> - platforms.intersect(node.platformsToShow) - } + val platforms = platformsOfItems(items) if (platforms.isNotEmpty() && (platforms != node.platformsToShow.toSet() || !omitSamePlatforms)) { return platforms } |