From bc71b31be28ed558e022babcf40ec1fd3bff923a Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Mon, 27 Feb 2017 20:08:31 +0300 Subject: Platform and version requirements for packages. Fixed tests. Post review. --- .../main/kotlin/Formats/StructuredFormatService.kt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'core/src/main/kotlin') diff --git a/core/src/main/kotlin/Formats/StructuredFormatService.kt b/core/src/main/kotlin/Formats/StructuredFormatService.kt index 79ebabe0..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()) "" 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): Set = + items.foldRight(items.first().platformsToShow.toSet()) { + node, platforms -> + platforms.intersect(node.platformsToShow) + } + val DocumentationNode.platformsToShow: List get() = platforms.let { if (it.containsAll(impliedPlatforms)) it - impliedPlatforms else it } @@ -501,10 +514,7 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } private fun platformsOfItems(items: List, omitSamePlatforms: Boolean = true): Set { - 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 } -- cgit