Skip to content

Commit

Permalink
Expose Kotlin-as-Java methods that could be used not only as part of …
Browse files Browse the repository at this point in the history
…transformers
  • Loading branch information
BarkingBad committed Feb 11, 2022
1 parent 1073ea1 commit e4409ae
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 28 deletions.
4 changes: 4 additions & 0 deletions plugins/kotlin-as-java/api/kotlin-as-java.api
Expand Up @@ -6,6 +6,10 @@ public final class org/jetbrains/dokka/kotlinAsJava/KotlinAsJavaPlugin : org/jet
public final fun getKotlinAsJavaDocumentableTransformer ()Lorg/jetbrains/dokka/plugability/Extension;
}

public final class org/jetbrains/dokka/kotlinAsJava/TransformDocumentableToJavaKt {
public static final fun transformClasslikeToJava (Lorg/jetbrains/dokka/model/DClasslike;Lorg/jetbrains/dokka/plugability/DokkaContext;)Lorg/jetbrains/dokka/model/DClasslike;
}

public final class org/jetbrains/dokka/kotlinAsJava/converters/KotlinToJavaConverterKt {
public static final fun getJvmNameProvider ()Lorg/jetbrains/dokka/kotlinAsJava/transformers/JvmNameProvider;
}
Expand Down
@@ -0,0 +1,9 @@
package org.jetbrains.dokka.kotlinAsJava

import org.jetbrains.dokka.kotlinAsJava.transformers.JvmNameDocumentableTransformer
import org.jetbrains.dokka.model.DClasslike
import org.jetbrains.dokka.plugability.DokkaContext

fun DClasslike.transformClasslikeToJava(context: DokkaContext): DClasslike {
return JvmNameDocumentableTransformer().transform(this, context)
}
Expand Up @@ -7,20 +7,18 @@ import org.jetbrains.dokka.transformers.documentation.DocumentableTransformer

class JvmNameDocumentableTransformer : DocumentableTransformer {
private val jvmNameProvider = JvmNameProvider()
private lateinit var context: DokkaContext

override fun invoke(original: DModule, context: DokkaContext): DModule {
this.context = context
return original.copy(packages = original.packages.map { transform(it) })
return original.copy(packages = original.packages.map { transform(it, context) })
}

private fun <T : Documentable> transform(documentable: T): T =
internal fun <T : Documentable> transform(documentable: T, context: DokkaContext): T =
with(documentable) {
when (this) {
is DPackage -> copy(
functions = functions.map { transform(it) },
properties = properties.map { transform(it) },
classlikes = classlikes.map { transform(it) },
functions = functions.map { transform(it, context) },
properties = properties.map { transform(it, context) },
classlikes = classlikes.map { transform(it, context) },
)
is DFunction -> {
val name = jvmNameProvider.nameFor(this)
Expand All @@ -31,11 +29,11 @@ class JvmNameDocumentableTransformer : DocumentableTransformer {
)
}
is DProperty -> transformGetterAndSetter(this)
is DClasslike -> transformClassLike(this)
is DClasslike -> transformClassLike(this, context)
is DEnumEntry -> copy(
functions = functions.map { transform(it) },
properties = properties.map { transform(it) },
classlikes = classlikes.map { transform(it) },
functions = functions.map { transform(it, context) },
properties = properties.map { transform(it, context) },
classlikes = classlikes.map { transform(it, context) },
)
else -> {
context.logger.warn("Failed to translate a JvmName for ${this.javaClass.canonicalName}")
Expand All @@ -55,33 +53,33 @@ class JvmNameDocumentableTransformer : DocumentableTransformer {
return extraWithoutAnnotations.addAll(listOfNotNull(annotationsWithoutJvmName))
}

private fun transformClassLike(documentable: DClasslike): DClasslike =
private fun transformClassLike(documentable: DClasslike, context: DokkaContext): DClasslike =
with(documentable) {
when (this) {
is DClass -> copy(
functions = functions.map { transform(it) },
properties = properties.map { transform(it) },
classlikes = classlikes.map { transform(it) },
functions = functions.map { transform(it, context) },
properties = properties.map { transform(it, context) },
classlikes = classlikes.map { transform(it, context) },
)
is DAnnotation -> copy(
functions = functions.map { transform(it) },
properties = properties.map { transform(it) },
classlikes = classlikes.map { transform(it) },
functions = functions.map { transform(it, context) },
properties = properties.map { transform(it, context) },
classlikes = classlikes.map { transform(it, context) },
)
is DObject -> copy(
functions = functions.map { transform(it) },
properties = properties.map { transform(it) },
classlikes = classlikes.map { transform(it) },
functions = functions.map { transform(it, context) },
properties = properties.map { transform(it, context) },
classlikes = classlikes.map { transform(it, context) },
)
is DEnum -> copy(
functions = functions.map { transform(it) },
properties = properties.map { transform(it) },
classlikes = classlikes.map { transform(it) },
functions = functions.map { transform(it, context) },
properties = properties.map { transform(it, context) },
classlikes = classlikes.map { transform(it, context) },
)
is DInterface -> copy(
functions = functions.map { transform(it) },
properties = properties.map { transform(it) },
classlikes = classlikes.map { transform(it) },
functions = functions.map { transform(it, context) },
properties = properties.map { transform(it, context) },
classlikes = classlikes.map { transform(it, context) },
)
}
}
Expand All @@ -108,4 +106,4 @@ class JvmNameDocumentableTransformer : DocumentableTransformer {
}
})
}
}
}

0 comments on commit e4409ae

Please sign in to comment.