diff options
Diffstat (limited to 'plugins/android-documentation')
5 files changed, 109 insertions, 0 deletions
diff --git a/plugins/android-documentation/build.gradle.kts b/plugins/android-documentation/build.gradle.kts new file mode 100644 index 00000000..79a89165 --- /dev/null +++ b/plugins/android-documentation/build.gradle.kts @@ -0,0 +1,11 @@ +import org.jetbrains.registerDokkaArtifactPublication + +dependencies { + implementation(project(":plugins:base")) + testImplementation(project(":plugins:base")) + testImplementation(project(":plugins:base:base-test-utils")) +} + +registerDokkaArtifactPublication("androidDocumentationPlugin") { + artifactId = "android-documentation-plugin" +} 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 |