From a3c7641398de9a3cd594a273538bb9e916139830 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 24 Feb 2017 13:15:30 +0100 Subject: Omit platform of members when it's the same as the platform of the defining class --- .../main/kotlin/Formats/StructuredFormatService.kt | 22 ++++++++++++---------- core/src/test/kotlin/format/MarkdownFormatTest.kt | 7 +++++++ .../format/multiplatformMergeMembers/foo.md | 6 +++--- .../format/multiplatformOmitRedundant/foo.md | 22 ++++++++++++++++++++++ .../format/multiplatformOmitRedundant/js.kt | 2 ++ .../format/multiplatformOmitRedundant/jvm.kt | 11 +++++++++++ 6 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 core/testdata/format/multiplatformOmitRedundant/foo.md create mode 100644 core/testdata/format/multiplatformOmitRedundant/js.kt create mode 100644 core/testdata/format/multiplatformOmitRedundant/jvm.kt (limited to 'core') diff --git a/core/src/main/kotlin/Formats/StructuredFormatService.kt b/core/src/main/kotlin/Formats/StructuredFormatService.kt index de2ef3ed..3cfc96a2 100644 --- a/core/src/main/kotlin/Formats/StructuredFormatService.kt +++ b/core/src/main/kotlin/Formats/StructuredFormatService.kt @@ -406,15 +406,15 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, appendSection("Exceptions", node.members(NodeKind.Exception)) appendSection("Type Aliases", node.members(NodeKind.TypeAlias)) appendSection("Extensions for External Classes", node.members(NodeKind.ExternalClass)) - appendSection("Enum Values", node.members(NodeKind.EnumItem), sortMembers = false) - appendSection("Constructors", node.members(NodeKind.Constructor)) - appendSection("Properties", node.members(NodeKind.Property)) + appendSection("Enum Values", node.members(NodeKind.EnumItem), sortMembers = false, omitSamePlatforms = true) + appendSection("Constructors", node.members(NodeKind.Constructor), omitSamePlatforms = true) + appendSection("Properties", node.members(NodeKind.Property), omitSamePlatforms = true) appendSection("Inherited Properties", node.inheritedMembers(NodeKind.Property)) - appendSection("Functions", node.members(NodeKind.Function)) + appendSection("Functions", node.members(NodeKind.Function), omitSamePlatforms = true) appendSection("Inherited Functions", node.inheritedMembers(NodeKind.Function)) - appendSection("Companion Object Properties", node.members(NodeKind.CompanionObjectProperty)) + appendSection("Companion Object Properties", node.members(NodeKind.CompanionObjectProperty), omitSamePlatforms = true) appendSection("Inherited Companion Object Properties", node.inheritedCompanionObjectMembers(NodeKind.Property)) - appendSection("Companion Object Functions", node.members(NodeKind.CompanionObjectFunction)) + appendSection("Companion Object Functions", node.members(NodeKind.CompanionObjectFunction), omitSamePlatforms = true) appendSection("Inherited Companion Object Functions", node.inheritedCompanionObjectMembers(NodeKind.Function)) appendSection("Other members", node.members.filter { it.kind !in setOf( @@ -453,7 +453,9 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } } - private fun appendSection(caption: String, members: List, sortMembers: Boolean = true) { + private fun appendSection(caption: String, members: List, + sortMembers: Boolean = true, + omitSamePlatforms: Boolean = false) { if (members.isEmpty()) return appendHeader(3) { appendText(caption) } @@ -467,7 +469,7 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, appendTableRow { appendTableCell { appendLink(memberLocation) - appendPlatforms(members) + appendPlatforms(members, omitSamePlatforms) } appendTableCell { val breakdownBySummary = members.groupBy { it.summary } @@ -502,11 +504,11 @@ abstract class StructuredOutputBuilder(val to: StringBuilder, } } - private fun appendPlatforms(items: List) { + private fun appendPlatforms(items: List, omitSamePlatforms: Boolean) { val platforms = items.foldRight(items.first().platformsToShow.toSet()) { node, platforms -> platforms.intersect(node.platformsToShow) } - if (platforms.isNotEmpty()) { + if (platforms.isNotEmpty() && (platforms != node.platformsToShow.toSet() || !omitSamePlatforms)) { appendLine() to.append("(${platforms.joinToString()})") } diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt index 7c1cc8b3..fb202b81 100644 --- a/core/src/test/kotlin/format/MarkdownFormatTest.kt +++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt @@ -265,6 +265,13 @@ class MarkdownFormatTest { } } + @Test fun multiplePlatformsOmitRedundant() { + val module = buildMultiplePlatforms("multiplatformOmitRedundant") + verifyModelOutput(module, ".md", "testdata/format/multiplatformOmitRedundant/foo.kt") { model, output -> + markdownService.createOutputBuilder(output, tempLocation).appendNodes(model.members.single().members) + } + } + @Test fun multiplePlatformsImplied() { val module = buildMultiplePlatforms("multiplatformImplied") verifyModelOutput(module, ".md", "testdata/format/multiplatformImplied/foo.kt") { model, output -> diff --git a/core/testdata/format/multiplatformMergeMembers/foo.md b/core/testdata/format/multiplatformMergeMembers/foo.md index 3bf19fe1..7490c878 100644 --- a/core/testdata/format/multiplatformMergeMembers/foo.md +++ b/core/testdata/format/multiplatformMergeMembers/foo.md @@ -10,17 +10,17 @@ This is a foo. ### Constructors -| [<init>](test/foo/-foo/-init-)
(JVM, JS) | `Foo()`
This is a foo. | +| [<init>](test/foo/-foo/-init-) | `Foo()`
This is a foo. | ### Properties | [propJs](test/foo/-foo/prop-js)
(JS) | `val propJs: String` | | [propJvm](test/foo/-foo/prop-jvm)
(JVM) | `val propJvm: String` | -| [propJvmAndJs](test/foo/-foo/prop-jvm-and-js)
(JVM, JS) | `val propJvmAndJs: Int` | +| [propJvmAndJs](test/foo/-foo/prop-jvm-and-js) | `val propJvmAndJs: Int` | ### Functions -| [bothJvmAndJs](test/foo/-foo/both-jvm-and-js)
(JVM, JS) | `fun bothJvmAndJs(): Unit` | +| [bothJvmAndJs](test/foo/-foo/both-jvm-and-js) | `fun bothJvmAndJs(): Unit` | | [js](test/foo/-foo/js)
(JS) | `fun js(): Unit` | | [jvm](test/foo/-foo/jvm)
(JVM) | `fun jvm(): Unit` | diff --git a/core/testdata/format/multiplatformOmitRedundant/foo.md b/core/testdata/format/multiplatformOmitRedundant/foo.md new file mode 100644 index 00000000..088ced2c --- /dev/null +++ b/core/testdata/format/multiplatformOmitRedundant/foo.md @@ -0,0 +1,22 @@ +[test](test/index) / [foo](test/foo/index) / [Foo](test/foo/-foo/index) + +# Foo + +`class Foo` + +**Platform and version requirements:** JVM + +This is a foo. + +### Constructors + +| [<init>](test/foo/-foo/-init-) | `Foo()`
This is a foo. | + +### Properties + +| [propJvm](test/foo/-foo/prop-jvm) | `val propJvm: String` | + +### Functions + +| [jvm](test/foo/-foo/jvm) | `fun jvm(): Unit` | + diff --git a/core/testdata/format/multiplatformOmitRedundant/js.kt b/core/testdata/format/multiplatformOmitRedundant/js.kt new file mode 100644 index 00000000..d1b1429c --- /dev/null +++ b/core/testdata/format/multiplatformOmitRedundant/js.kt @@ -0,0 +1,2 @@ +package foo + diff --git a/core/testdata/format/multiplatformOmitRedundant/jvm.kt b/core/testdata/format/multiplatformOmitRedundant/jvm.kt new file mode 100644 index 00000000..35e3c08d --- /dev/null +++ b/core/testdata/format/multiplatformOmitRedundant/jvm.kt @@ -0,0 +1,11 @@ +package foo + +/** + * This is a foo. + */ +class Foo { + fun jvm() { + } + + val propJvm = "abc" +} -- cgit