diff options
author | Marcin Aman <marcin.aman@gmail.com> | 2021-03-01 11:57:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-01 11:57:30 +0100 |
commit | c01e49eec9558736959d12820361624a3c3e41e5 (patch) | |
tree | a88ee64c5ba5a8d4c9ff037fdfbea6a3527349fe /plugins/android-documentation/src | |
parent | 201a9785a04d631fae65a3af3b495962e4f16d14 (diff) | |
download | dokka-c01e49eec9558736959d12820361624a3c3e41e5.tar.gz dokka-c01e49eec9558736959d12820361624a3c3e41e5.tar.bz2 dokka-c01e49eec9558736959d12820361624a3c3e41e5.zip |
Suppress tag support (#1742)
* Suppress tag support
* Support Hide tag in javadoc
* Extract hide tag to be in separate plugin
Diffstat (limited to 'plugins/android-documentation/src')
4 files changed, 98 insertions, 0 deletions
diff --git a/plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt b/plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt new file mode 100644 index 00000000..fd345802 --- /dev/null +++ b/plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt @@ -0,0 +1,13 @@ +package org.jetbrains.dokka.android + +import org.jetbrains.dokka.android.transformers.HideTagDocumentableFilter +import org.jetbrains.dokka.base.DokkaBase +import org.jetbrains.dokka.plugability.DokkaPlugin + +class AndroidDocumentationPlugin : DokkaPlugin() { + private val dokkaBase by lazy { plugin<DokkaBase>() } + + val suppressedByHideTagDocumentableFilter by extending { + dokkaBase.preMergeDocumentableTransformer providing ::HideTagDocumentableFilter order { before(dokkaBase.emptyPackagesFilter) } + } +}
\ No newline at end of file diff --git a/plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt b/plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt new file mode 100644 index 00000000..074413cc --- /dev/null +++ b/plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt @@ -0,0 +1,13 @@ +package org.jetbrains.dokka.android.transformers + +import org.jetbrains.dokka.base.transformers.documentables.SuppressedByTagDocumentableFilterTransformer +import org.jetbrains.dokka.model.Documentable +import org.jetbrains.dokka.model.dfs +import org.jetbrains.dokka.model.doc.CustomTagWrapper +import org.jetbrains.dokka.plugability.DokkaContext + +class HideTagDocumentableFilter(val dokkaContext: DokkaContext) : + SuppressedByTagDocumentableFilterTransformer(dokkaContext) { + override fun shouldBeSuppressed(d: Documentable): Boolean = + d.documentation.any { (_, docs) -> docs.dfs { it is CustomTagWrapper && it.name.trim() == "hide" } != null } +}
\ No newline at end of file diff --git a/plugins/android-documentation/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin b/plugins/android-documentation/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin new file mode 100644 index 00000000..ee7f92e0 --- /dev/null +++ b/plugins/android-documentation/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin @@ -0,0 +1 @@ +org.jetbrains.dokka.android.AndroidDocumentationPlugin diff --git a/plugins/android-documentation/src/test/kotlin/transformers/HideTagDocumentableFilterTest.kt b/plugins/android-documentation/src/test/kotlin/transformers/HideTagDocumentableFilterTest.kt new file mode 100644 index 00000000..01a802bf --- /dev/null +++ b/plugins/android-documentation/src/test/kotlin/transformers/HideTagDocumentableFilterTest.kt @@ -0,0 +1,71 @@ +package transformers + +import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest +import org.jetbrains.dokka.model.DClass +import kotlin.test.assertEquals +import org.junit.jupiter.api.Test + +class HideTagDocumentableFilterTest : BaseAbstractTest() { + private val configuration = dokkaConfiguration { + sourceSets { + sourceSet { + sourceRoots = listOf("src") + } + } + } + + + @Test + fun `should work as hide in java with functions`() { + testInline( + """ + |/src/suppressed/Testing.java + |package testing; + | + |public class Testing { + | /** + | * @hide + | */ + | public void shouldNotBeVisible() { } + |} + """.trimIndent(), configuration + ) { + documentablesFirstTransformationStep = { modules -> + val testingClass = modules.flatMap { it.packages }.flatMap { it.classlikes }.single() as DClass + assertEquals(0, testingClass.functions.size) + } + } + } + + @Test + fun `should work as hide in java with classes`() { + testInline( + """ + |/src/suppressed/Suppressed.java + |package testing; + | + |/** + | * @hide + | */ + |public class Suppressed { + |} + |/src/suppressed/Visible.java + |package testing; + | + |/** + | * Another docs + | * @undeprecate + | */ + |public class Visible { + |} + """.trimIndent(), configuration + ) { + documentablesFirstTransformationStep = { modules -> + val classes = modules.flatMap { it.packages }.flatMap { it.classlikes }.map { it.name } + assertEquals(listOf("Visible"), classes) + } + } + } + + +}
\ No newline at end of file |