aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/transformers
diff options
context:
space:
mode:
authorPaweł Marks <pmarks@virtuslab.com>2020-02-17 09:32:35 +0100
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-02-18 13:28:23 +0100
commitf625cef495d625d81ee22e950083f57cc4fab875 (patch)
treed4587be659154a3000ee58fe2297e55604e418e8 /core/src/main/kotlin/transformers
parent3b200cf10e0c50c2eee4b9da3f7039d678fa4aad (diff)
downloaddokka-f625cef495d625d81ee22e950083f57cc4fab875.tar.gz
dokka-f625cef495d625d81ee22e950083f57cc4fab875.tar.bz2
dokka-f625cef495d625d81ee22e950083f57cc4fab875.zip
Moves PsiToDocumentablesTranslator to the base plugin
Diffstat (limited to 'core/src/main/kotlin/transformers')
-rw-r--r--core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt143
1 files changed, 0 insertions, 143 deletions
diff --git a/core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt b/core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt
deleted file mode 100644
index 055df0b2..00000000
--- a/core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.jetbrains.dokka.transformers.psi
-
-import com.intellij.psi.*
-import com.intellij.psi.impl.source.PsiClassReferenceType
-import org.jetbrains.dokka.JavadocParser
-import org.jetbrains.dokka.links.Callable
-import org.jetbrains.dokka.links.DRI
-import org.jetbrains.dokka.links.JavaClassReference
-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.utilities.DokkaLogger
-import org.jetbrains.kotlin.descriptors.Visibilities
-import org.jetbrains.kotlin.idea.caches.project.getPlatformModuleInfo
-import org.jetbrains.kotlin.platform.TargetPlatform
-
-object DefaultPsiToDocumentationTranslator : PsiToDocumentationTranslator {
-
- override fun invoke(
- moduleName: String,
- psiFiles: List<PsiJavaFile>,
- platformData: PlatformData,
- context: DokkaContext
- ): Module {
- val docParser = DokkaPsiParser(platformData, context.logger)
- return Module(moduleName,
- psiFiles.map { psiFile ->
- val dri = DRI(packageName = psiFile.packageName)
- Package(
- dri,
- emptyList(),
- emptyList(),
- psiFile.classes.map { docParser.parseClass(it, dri) }
- )
- }
- )
- }
-
- class DokkaPsiParser(
- private val platformData: PlatformData,
- logger: DokkaLogger
- ) {
-
- private val javadocParser: JavadocParser = JavadocParser(logger)
-
- private fun getComment(psi: PsiNamedElement): List<PlatformInfo> {
- val comment = javadocParser.parseDocumentation(psi)
- return listOf(BasePlatformInfo(comment, listOf(platformData)))
- }
-
- private fun PsiModifierListOwner.getVisibility() = modifierList?.children?.toList()?.let { ml ->
- when {
- ml.any { it.text == PsiKeyword.PUBLIC } -> Visibilities.PUBLIC
- ml.any { it.text == PsiKeyword.PROTECTED } -> Visibilities.PROTECTED
- else -> Visibilities.PRIVATE
- }
- } ?: Visibilities.PRIVATE
-
- fun parseClass(psi: PsiClass, parent: DRI): Class = with(psi) {
- val kind = when {
- isAnnotationType -> JavaClassKindTypes.ANNOTATION_CLASS
- isInterface -> JavaClassKindTypes.INTERFACE
- isEnum -> JavaClassKindTypes.ENUM_CLASS
- else -> JavaClassKindTypes.CLASS
- }
- val dri = parent.withClass(name.toString())
- /*superTypes.filter { !ignoreSupertype(it) }.forEach {
- node.appendType(it, NodeKind.Supertype)
- val superClass = it.resolve()
- if (superClass != null) {
- link(superClass, node, RefKind.Inheritor)
- }
- }*/
- val inherited = emptyList<DRI>() //listOf(psi.superClass) + psi.interfaces // TODO DRIs of inherited
- val actual = getComment(psi).map { ClassPlatformInfo(it, inherited) }
-
- return Class(
- dri = dri,
- name = name.orEmpty(),
- kind = kind,
- constructors = constructors.map { parseFunction(it, dri, true) },
- functions = methods.mapNotNull { if (!it.isConstructor) parseFunction(it, dri) else null },
- properties = fields.mapNotNull { parseField(it, dri) },
- classlikes = innerClasses.map { parseClass(it, dri) },
- expected = null,
- actual = actual,
- extra = mutableSetOf(),
- visibility = mapOf(platformData to psi.getVisibility())
- )
- }
-
- private fun parseFunction(psi: PsiMethod, parent: DRI, isConstructor: Boolean = false): Function {
- val dri = parent.copy(callable = Callable(
- psi.name,
- JavaClassReference(psi.containingClass?.name.orEmpty()),
- psi.parameterList.parameters.map { parameter ->
- JavaClassReference(parameter.type.canonicalText)
- }
- )
- )
- return Function(
- dri,
- if (isConstructor) "<init>" else psi.name,
- psi.returnType?.let { JavaTypeWrapper(type = it) },
- isConstructor,
- null,
- psi.parameterList.parameters.mapIndexed { index, psiParameter ->
- Parameter(
- dri.copy(target = index + 1),
- psiParameter.name,
- JavaTypeWrapper(psiParameter.type),
- null,
- getComment(psi)
- )
- },
- null,
- getComment(psi),
- visibility = mapOf(platformData to psi.getVisibility())
- )
- }
-
- private fun parseField(psi: PsiField, parent: DRI): Property {
- val dri = parent.copy(
- callable = Callable(
- psi.name,
- JavaClassReference(psi.containingClass?.name.orEmpty()),
- emptyList()
- )
- )
- return Property(
- dri,
- psi.name,
- null,
- null,
- getComment(psi),
- accessors = emptyList(),
- visibility = mapOf(platformData to psi.getVisibility())
- )
- }
- }
-}