aboutsummaryrefslogtreecommitdiff
path: root/plugins/android-documentation/src
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/android-documentation/src')
-rw-r--r--plugins/android-documentation/src/main/kotlin/AndroidDocumentationPlugin.kt13
-rw-r--r--plugins/android-documentation/src/main/kotlin/transformers/HideTagDocumentableFilter.kt13
-rw-r--r--plugins/android-documentation/src/main/resources/META-INF/services/org.jetbrains.dokka.plugability.DokkaPlugin1
-rw-r--r--plugins/android-documentation/src/test/kotlin/transformers/HideTagDocumentableFilterTest.kt71
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