aboutsummaryrefslogtreecommitdiff
path: root/plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaDescriptorToDocumentationTranslator.kt
diff options
context:
space:
mode:
authorSzymon Świstun <sswistun@virtuslab.com>2020-01-20 14:55:42 +0100
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-02-12 13:13:18 +0100
commit50e711d24b517bc93c37d89f258c9dafaa038ad1 (patch)
tree201c27b6860ac14b6ddc673ff099d74f53b4e15c /plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaDescriptorToDocumentationTranslator.kt
parent5a432c9c62ff95779a495fb354c83f5f7c481a1d (diff)
downloaddokka-50e711d24b517bc93c37d89f258c9dafaa038ad1.tar.gz
dokka-50e711d24b517bc93c37d89f258c9dafaa038ad1.tar.bz2
dokka-50e711d24b517bc93c37d89f258c9dafaa038ad1.zip
kotlin-as-java plugin
Diffstat (limited to 'plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaDescriptorToDocumentationTranslator.kt')
-rw-r--r--plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaDescriptorToDocumentationTranslator.kt75
1 files changed, 75 insertions, 0 deletions
diff --git a/plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaDescriptorToDocumentationTranslator.kt b/plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaDescriptorToDocumentationTranslator.kt
new file mode 100644
index 00000000..9c4ee9aa
--- /dev/null
+++ b/plugins/kotlin-as-java/src/main/kotlin/KotlinAsJavaDescriptorToDocumentationTranslator.kt
@@ -0,0 +1,75 @@
+package org.jetbrains.dokka.kotlinAsJava
+
+import org.jetbrains.dokka.analysis.DokkaResolutionFacade
+import org.jetbrains.dokka.links.Callable
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.dokka.links.withClass
+import org.jetbrains.dokka.model.*
+import org.jetbrains.dokka.model.Function
+import org.jetbrains.dokka.pages.PlatformData
+import org.jetbrains.dokka.plugability.DokkaContext
+import org.jetbrains.dokka.transformers.descriptors.DRIWithPlatformInfo
+import org.jetbrains.dokka.transformers.descriptors.DescriptorToDocumentationTranslator
+import org.jetbrains.dokka.transformers.descriptors.DokkaDescriptorVisitor
+import org.jetbrains.dokka.transformers.descriptors.withEmptyInfo
+import org.jetbrains.kotlin.descriptors.*
+
+object KotlinAsJavaDescriptorToDocumentationTranslator : DescriptorToDocumentationTranslator {
+ override fun invoke(
+ moduleName: String,
+ packageFragments: Iterable<PackageFragmentDescriptor>,
+ platformData: PlatformData,
+ context: DokkaContext
+ ): Module =
+ KotlinAsJavaDokkaDescriptorVisitor(platformData, context.platforms[platformData]?.facade!!).run {
+ packageFragments.map { visitPackageFragmentDescriptor(it, DRI.topLevel.withEmptyInfo()) }
+ }.let { Module(moduleName, it) }
+}
+
+class KotlinAsJavaDokkaDescriptorVisitor(
+ platformData: PlatformData,
+ resolutionFacade: DokkaResolutionFacade
+) : DokkaDescriptorVisitor(platformData, resolutionFacade) {
+ override fun visitPackageFragmentDescriptor(
+ descriptor: PackageFragmentDescriptor,
+ parent: DRIWithPlatformInfo
+ ): Package {
+ val dri = DRI(packageName = descriptor.fqName.asString())
+ DescriptorCache.add(dri, descriptor)
+ return super.visitPackageFragmentDescriptor(descriptor, parent)
+ }
+
+ override fun visitClassDescriptor(descriptor: ClassDescriptor, parent: DRIWithPlatformInfo): Classlike {
+ val dri = parent.dri.withClass(descriptor.name.asString())
+ DescriptorCache.add(dri, descriptor)
+ return super.visitClassDescriptor(descriptor, parent)
+ }
+
+ override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, parent: DRIWithPlatformInfo): Property {
+ val dri = parent.dri.copy(callable = Callable.from(descriptor))
+ DescriptorCache.add(dri, descriptor)
+ return super.visitPropertyDescriptor(descriptor, parent)
+ }
+
+ override fun visitFunctionDescriptor(descriptor: FunctionDescriptor, parent: DRIWithPlatformInfo): Function {
+ val dri = parent.dri.copy(callable = Callable.from(descriptor))
+ DescriptorCache.add(dri, descriptor)
+ return super.visitFunctionDescriptor(descriptor, parent)
+ }
+
+ override fun visitConstructorDescriptor(descriptor: ConstructorDescriptor, parent: DRIWithPlatformInfo): Function {
+ val dri = parent.dri.copy(callable = Callable.from(descriptor))
+ DescriptorCache.add(dri, descriptor)
+ return super.visitConstructorDescriptor(descriptor, parent)
+ }
+
+ override fun visitPropertyAccessorDescriptor(
+ descriptor: PropertyAccessorDescriptor,
+ propertyDescriptor: PropertyDescriptor,
+ parent: DRI
+ ): Function {
+ val dri = parent.copy(callable = Callable.from(descriptor))
+ DescriptorCache.add(dri, descriptor)
+ return super.visitPropertyAccessorDescriptor(descriptor, propertyDescriptor, parent)
+ }
+} \ No newline at end of file