aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorPaweł Marks <pmarks@virtuslab.com>2020-02-12 16:01:38 +0100
committerPaweł Marks <Kordyjan@users.noreply.github.com>2020-02-18 13:28:23 +0100
commit848f2e0656e80604cb54932db5b250303aaccca8 (patch)
tree2d577faf9ee5f894fb2a97aa01a89d75d3c59841 /core
parent46b4bbb68ce1285a1aea700cc0d0000c6b7ed97b (diff)
downloaddokka-848f2e0656e80604cb54932db5b250303aaccca8.tar.gz
dokka-848f2e0656e80604cb54932db5b250303aaccca8.tar.bz2
dokka-848f2e0656e80604cb54932db5b250303aaccca8.zip
Moves DescriptorToDocumentableTransformer to base plugin
Diffstat (limited to 'core')
-rw-r--r--core/src/main/kotlin/CoreExtensions.kt1
-rw-r--r--core/src/main/kotlin/DokkaGenerator.kt2
-rw-r--r--core/src/main/kotlin/model/Documentable.kt12
-rw-r--r--core/src/main/kotlin/model/classKinds.kt25
-rw-r--r--core/src/main/kotlin/model/typeWrappers.kt97
-rw-r--r--core/src/main/kotlin/plugability/DefaultExtensions.kt2
-rw-r--r--core/src/main/kotlin/transformers/descriptors/DefaultDescriptorToDocumentationTranslator.kt362
-rw-r--r--core/src/main/kotlin/transformers/descriptors/DescriptorToDocumentationTranslator.kt3
-rw-r--r--core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt72
9 files changed, 124 insertions, 452 deletions
diff --git a/core/src/main/kotlin/CoreExtensions.kt b/core/src/main/kotlin/CoreExtensions.kt
index 18cde210..1364f1c1 100644
--- a/core/src/main/kotlin/CoreExtensions.kt
+++ b/core/src/main/kotlin/CoreExtensions.kt
@@ -30,7 +30,6 @@ object CoreExtensions {
val locationProviderFactory by coreExtension<LocationProviderFactory>()
val outputWriter by coreExtension<OutputWriter>()
val renderer by coreExtension<Renderer>()
- val fileExtension by coreExtension<String>()
val pageMergerStrategy by coreExtension<PageMergerStrategy>()
private fun <T: Any> coreExtension() = object {
diff --git a/core/src/main/kotlin/DokkaGenerator.kt b/core/src/main/kotlin/DokkaGenerator.kt
index a31c04a6..6a21e031 100644
--- a/core/src/main/kotlin/DokkaGenerator.kt
+++ b/core/src/main/kotlin/DokkaGenerator.kt
@@ -130,7 +130,7 @@ class DokkaGenerator(
.toList()
return context.single(CoreExtensions.descriptorToDocumentationTranslator)
- .invoke(platformData.name, packageFragments, platformData, context)
+ .invoke(platformData.name, packageFragments, platformData)
}
private fun translatePsi(platformData: PlatformData, context: DokkaContext): Module {
diff --git a/core/src/main/kotlin/model/Documentable.kt b/core/src/main/kotlin/model/Documentable.kt
index e64f82ac..f0820256 100644
--- a/core/src/main/kotlin/model/Documentable.kt
+++ b/core/src/main/kotlin/model/Documentable.kt
@@ -3,9 +3,6 @@ package org.jetbrains.dokka.model
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.model.doc.DocumentationNode
import org.jetbrains.dokka.pages.PlatformData
-import org.jetbrains.dokka.transformers.descriptors.KotlinClassKindTypes
-import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
-import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
class Module(override val name: String, val packages: List<Package>) : Documentable() {
@@ -239,15 +236,6 @@ private fun String.shorten(maxLength: Int) = lineSequence().first().let {
if (it.length != length || it.length > maxLength) it.take(maxLength - 3) + "..." else it
}
-interface TypeWrapper {
- val constructorFqName: String?
- val constructorNamePathSegments: List<String>
- val arguments: List<TypeWrapper>
- val dri: DRI?
-}
-
-interface ClassKind
-
fun Documentable.dfs(predicate: (Documentable) -> Boolean): Documentable? =
if (predicate(this)) {
this
diff --git a/core/src/main/kotlin/model/classKinds.kt b/core/src/main/kotlin/model/classKinds.kt
new file mode 100644
index 00000000..2548f68d
--- /dev/null
+++ b/core/src/main/kotlin/model/classKinds.kt
@@ -0,0 +1,25 @@
+package org.jetbrains.dokka.model
+
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
+import org.jetbrains.kotlin.types.KotlinType
+
+
+interface ClassKind
+
+enum class KotlinClassKindTypes : ClassKind {
+ CLASS,
+ INTERFACE,
+ ENUM_CLASS,
+ ENUM_ENTRY,
+ ANNOTATION_CLASS,
+ OBJECT;
+}
+
+enum class JavaClassKindTypes : ClassKind {
+ CLASS,
+ INTERFACE,
+ ENUM_CLASS,
+ ENUM_ENTRY,
+ ANNOTATION_CLASS;
+}
diff --git a/core/src/main/kotlin/model/typeWrappers.kt b/core/src/main/kotlin/model/typeWrappers.kt
new file mode 100644
index 00000000..5719c6d3
--- /dev/null
+++ b/core/src/main/kotlin/model/typeWrappers.kt
@@ -0,0 +1,97 @@
+package org.jetbrains.dokka.model
+
+import com.intellij.psi.PsiArrayType
+import com.intellij.psi.PsiEllipsisType
+import com.intellij.psi.PsiPrimitiveType
+import com.intellij.psi.PsiType
+import com.intellij.psi.impl.source.PsiClassReferenceType
+import org.jetbrains.dokka.links.DRI
+import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
+import org.jetbrains.kotlin.types.KotlinType
+
+interface TypeWrapper {
+ val constructorFqName: String?
+ val constructorNamePathSegments: List<String>
+ val arguments: List<TypeWrapper>
+ val dri: DRI?
+}
+
+class KotlinTypeWrapper(private val kotlinType: KotlinType) : TypeWrapper {
+ private val declarationDescriptor = kotlinType.constructor.declarationDescriptor
+ private val fqNameSafe = declarationDescriptor?.fqNameSafe
+ override val constructorFqName = fqNameSafe?.asString()
+ override val constructorNamePathSegments: List<String> =
+ fqNameSafe?.pathSegments()?.map { it.asString() } ?: emptyList()
+ override val arguments: List<KotlinTypeWrapper> by lazy {
+ kotlinType.arguments.map {
+ KotlinTypeWrapper(
+ it.type
+ )
+ }
+ }
+ override val dri: DRI? by lazy { declarationDescriptor?.let { DRI.from(it) } }
+}
+
+class JavaTypeWrapper : TypeWrapper {
+
+ override val constructorFqName: String?
+ override val constructorNamePathSegments: List<String>
+ override val arguments: List<TypeWrapper>
+ override val dri: DRI?
+ val isPrimitive: Boolean
+
+ constructor(
+ constructorNamePathSegments: List<String>,
+ arguments: List<TypeWrapper>,
+ dri: DRI?,
+ isPrimitiveType: Boolean
+ ) {
+ this.constructorFqName = constructorNamePathSegments.joinToString(".")
+ this.constructorNamePathSegments = constructorNamePathSegments
+ this.arguments = arguments
+ this.dri = dri
+ this.isPrimitive = isPrimitiveType
+ }
+
+ constructor(type: PsiType) {
+ if (type is PsiClassReferenceType) {
+ val resolved = type.resolve()
+ constructorFqName = resolved?.qualifiedName
+ constructorNamePathSegments = resolved?.qualifiedName?.split('.') ?: emptyList()
+ arguments = type.parameters.mapNotNull {
+ if (it is PsiClassReferenceType) JavaTypeWrapper(it) else null
+ }
+ dri = fromPsi(type)
+ this.isPrimitive = false
+ } else if (type is PsiEllipsisType) {
+ constructorFqName = type.canonicalText
+ constructorNamePathSegments = listOf(type.canonicalText) // TODO
+ arguments = emptyList()
+ dri = DRI("java.lang", "Object") // TODO
+ this.isPrimitive = false
+ } else if (type is PsiArrayType) {
+ constructorFqName = type.canonicalText
+ constructorNamePathSegments = listOf(type.canonicalText)
+ arguments = emptyList()
+ dri = (type as? PsiClassReferenceType)?.let { fromPsi(it) } // TODO
+ this.isPrimitive = false
+ } else {
+ type as PsiPrimitiveType
+ constructorFqName = type.name
+ constructorNamePathSegments = type.name.split('.')
+ arguments = emptyList()
+ dri = null
+ this.isPrimitive = true
+ }
+ }
+
+ private fun fromPsi(type: PsiClassReferenceType): DRI {
+ val className = type.className
+ val pkg = type.canonicalText.removeSuffix(className).removeSuffix(".")
+ return DRI(packageName = pkg, classNames = className)
+ }
+
+ override fun toString(): String {
+ return constructorFqName.orEmpty()
+ }
+}
diff --git a/core/src/main/kotlin/plugability/DefaultExtensions.kt b/core/src/main/kotlin/plugability/DefaultExtensions.kt
index 1320c282..70a7e4db 100644
--- a/core/src/main/kotlin/plugability/DefaultExtensions.kt
+++ b/core/src/main/kotlin/plugability/DefaultExtensions.kt
@@ -6,7 +6,6 @@ import org.jetbrains.dokka.renderers.FileWriter
import org.jetbrains.dokka.renderers.OutputWriter
import org.jetbrains.dokka.renderers.html.HtmlRenderer
import org.jetbrains.dokka.resolvers.DefaultLocationProviderFactory
-import org.jetbrains.dokka.transformers.descriptors.DefaultDescriptorToDocumentationTranslator
import org.jetbrains.dokka.transformers.documentation.DefaultDocumentationNodeMerger
import org.jetbrains.dokka.transformers.documentation.DefaultDocumentationToPageTranslator
import org.jetbrains.dokka.transformers.pages.DefaultPageMergerStrategy
@@ -28,7 +27,6 @@ internal object DefaultExtensions {
@Suppress("IMPLICIT_CAST_TO_ANY", "UNCHECKED_CAST")
internal fun <T : Any, E : ExtensionPoint<T>> get(point: E, fullContext: DokkaContext): List<T> =
when (point) {
- CoreExtensions.descriptorToDocumentationTranslator -> DefaultDescriptorToDocumentationTranslator
CoreExtensions.psiToDocumentationTranslator -> DefaultPsiToDocumentationTranslator
CoreExtensions.documentationMerger -> DefaultDocumentationNodeMerger
CoreExtensions.commentsToContentConverter -> converter.get(fullContext)
diff --git a/core/src/main/kotlin/transformers/descriptors/DefaultDescriptorToDocumentationTranslator.kt b/core/src/main/kotlin/transformers/descriptors/DefaultDescriptorToDocumentationTranslator.kt
deleted file mode 100644
index 173e13ac..00000000
--- a/core/src/main/kotlin/transformers/descriptors/DefaultDescriptorToDocumentationTranslator.kt
+++ /dev/null
@@ -1,362 +0,0 @@
-package org.jetbrains.dokka.transformers.descriptors
-
-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.ClassKind
-import org.jetbrains.dokka.model.Enum
-import org.jetbrains.dokka.model.Function
-import org.jetbrains.dokka.model.Property
-import org.jetbrains.dokka.model.doc.*
-import org.jetbrains.dokka.pages.PlatformData
-import org.jetbrains.dokka.parsers.MarkdownParser
-import org.jetbrains.dokka.plugability.DokkaContext
-import org.jetbrains.kotlin.descriptors.*
-import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies
-import org.jetbrains.kotlin.idea.kdoc.findKDoc
-import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
-import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperclassesWithoutAny
-import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces
-import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
-import org.jetbrains.kotlin.resolve.scopes.MemberScope
-import org.jetbrains.kotlin.types.KotlinType
-import kotlin.reflect.KClass
-
-object DefaultDescriptorToDocumentationTranslator : DescriptorToDocumentationTranslator {
- override fun invoke(
- moduleName: String,
- packageFragments: Iterable<PackageFragmentDescriptor>,
- platformData: PlatformData,
- context: DokkaContext
- ) = DokkaDescriptorVisitor(platformData, context.platforms[platformData]?.facade!!).run {
- packageFragments.map {
- visitPackageFragmentDescriptor(
- it,
- DRIWithPlatformInfo(DRI.topLevel, null, emptyList())
- )
- }
- }.let { Module(moduleName, it) }
-
-}
-
-
-data class DRIWithPlatformInfo(
- val dri: DRI,
- val expected: PlatformInfo?,
- val actual: List<PlatformInfo>
-)
-
-fun DRI.withEmptyInfo() = DRIWithPlatformInfo(this, null, emptyList())
-
-open class DokkaDescriptorVisitor(
- private val platformData: PlatformData,
- private val resolutionFacade: DokkaResolutionFacade
-) : DeclarationDescriptorVisitorEmptyBodies<Documentable, DRIWithPlatformInfo>() {
- override fun visitDeclarationDescriptor(descriptor: DeclarationDescriptor, parent: DRIWithPlatformInfo): Nothing {
- throw IllegalStateException("${javaClass.simpleName} should never enter ${descriptor.javaClass.simpleName}")
- }
-
- override fun visitPackageFragmentDescriptor(
- descriptor: PackageFragmentDescriptor,
- parent: DRIWithPlatformInfo
- ): Package {
- val driWithPlatform = DRI(packageName = descriptor.fqName.asString()).withEmptyInfo()
- val scope = descriptor.getMemberScope()
-
- return Package(
- dri = driWithPlatform.dri,
- functions = scope.functions(driWithPlatform),
- properties = scope.properties(driWithPlatform),
- classlikes = scope.classlikes(driWithPlatform)
- )
- }
-
- override fun visitClassDescriptor(descriptor: ClassDescriptor, parent: DRIWithPlatformInfo): Classlike =
- when (descriptor.kind) {
- org.jetbrains.kotlin.descriptors.ClassKind.ENUM_CLASS -> enumDescriptor(descriptor, parent)
- else -> classDescriptor(descriptor, parent)
- }
-
- fun enumDescriptor(descriptor: ClassDescriptor, parent: DRIWithPlatformInfo): Enum {
- val driWithPlatform = parent.dri.withClass(descriptor.name.asString()).withEmptyInfo()
- val scope = descriptor.unsubstitutedMemberScope
- val descriptorData = descriptor.takeUnless { it.isExpect }?.resolveClassDescriptionData()
-
- return Enum(
- dri = driWithPlatform.dri,
- name = descriptor.name.asString(),
- entries = scope.classlikes(driWithPlatform).filter { it.kind == KotlinClassKindTypes.ENUM_ENTRY }.map {
- EnumEntry(
- it
- )
- },
- constructors = descriptor.constructors.map { visitConstructorDescriptor(it, driWithPlatform) },
- functions = scope.functions(driWithPlatform),
- properties = scope.properties(driWithPlatform),
- classlikes = scope.classlikes(driWithPlatform),
- expected = descriptor.takeIf { it.isExpect }?.resolveClassDescriptionData(),
- actual = listOfNotNull(descriptorData),
- extra = mutableSetOf(), // TODO Implement following method to return proper results getXMLDRIs(descriptor, descriptorData).toMutableSet()
- visibility = mapOf(platformData to descriptor.visibility)
- )
- }
-
- fun classDescriptor(descriptor: ClassDescriptor, parent: DRIWithPlatformInfo): Class {
- val driWithPlatform = parent.dri.withClass(descriptor.name.asString()).withEmptyInfo()
- val scope = descriptor.unsubstitutedMemberScope
- val descriptorData = descriptor.takeUnless { it.isExpect }?.resolveClassDescriptionData()
- val expected = descriptor.takeIf { it.isExpect }?.resolveClassDescriptionData()
- val actual = listOfNotNull(descriptorData)
- return Class(
- dri = driWithPlatform.dri,
- name = descriptor.name.asString(),
- kind = KotlinClassKindTypes.valueOf(descriptor.kind.toString()),
- constructors = descriptor.constructors.map {
- visitConstructorDescriptor(
- it,
- if (it.isPrimary)
- DRIWithPlatformInfo(
- driWithPlatform.dri,
- expected?.info.filterTagWrappers(listOf(Constructor::class)),
- actual.filterTagWrappers(listOf(Constructor::class))
- )
- else
- DRIWithPlatformInfo(driWithPlatform.dri, null, emptyList())
- )
- },
- functions = scope.functions(driWithPlatform),
- properties = scope.properties(driWithPlatform),
- classlikes = scope.classlikes(driWithPlatform),
- expected = expected,
- actual = actual,
- extra = mutableSetOf(), // TODO Implement following method to return proper results getXMLDRIs(descriptor, descriptorData).toMutableSet()
- visibility = mapOf(platformData to descriptor.visibility)
- )
- }
-
- override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, parent: DRIWithPlatformInfo): Property {
- val expected = descriptor.takeIf { it.isExpect }?.resolveDescriptorData()
- val actual = listOfNotNull(descriptor.takeUnless { it.isExpect }?.resolveDescriptorData())
- val dri = parent.dri.copy(callable = Callable.from(descriptor))
-
- return Property(
- dri = dri,
- name = descriptor.name.asString(),
- receiver = descriptor.extensionReceiverParameter?.let {
- visitReceiverParameterDescriptor(
- it,
- DRIWithPlatformInfo(
- dri,
- expected?.filterTagWrappers(listOf(Receiver::class)),
- actual.filterTagWrappers(listOf(Receiver::class))
- )
- )
- },
- expected = expected,
- actual = actual,
- accessors = descriptor.accessors.map { visitPropertyAccessorDescriptor(it, descriptor, dri) },
- visibility = mapOf(platformData to descriptor.visibility)
- )
- }
-
- override fun visitFunctionDescriptor(descriptor: FunctionDescriptor, parent: DRIWithPlatformInfo): Function {
- val expected = descriptor.takeIf { it.isExpect }?.resolveDescriptorData()
- val actual = listOfNotNull(descriptor.takeUnless { it.isExpect }?.resolveDescriptorData())
- val dri = parent.dri.copy(callable = Callable.from(descriptor))
-
- return Function(
- dri = dri,
- name = descriptor.name.asString(),
- returnType = descriptor.returnType?.let { KotlinTypeWrapper(it) },
- isConstructor = false,
- receiver = descriptor.extensionReceiverParameter?.let {
- visitReceiverParameterDescriptor(
- it,
- DRIWithPlatformInfo(
- dri,
- expected?.filterTagWrappers(listOf(Receiver::class)),
- actual.filterTagWrappers(listOf(Receiver::class))
- )
- )
- },
- parameters = descriptor.valueParameters.mapIndexed { index, desc ->
- parameter(
- index, desc,
- DRIWithPlatformInfo(
- dri,
- expected.filterTagWrappers(listOf(Param::class), desc.name.asString()),
- actual.filterTagWrappers(listOf(Param::class), desc.name.asString())
- )
- )
- },
- expected = expected,
- actual = actual,
- visibility = mapOf(platformData to descriptor.visibility)
- )
- }
-
- override fun visitConstructorDescriptor(descriptor: ConstructorDescriptor, parent: DRIWithPlatformInfo): Function {
- val dri = parent.dri.copy(callable = Callable.from(descriptor))
- return Function(
- dri = dri,
- name = "<init>",
- returnType = KotlinTypeWrapper(descriptor.returnType),
- isConstructor = true,
- receiver = null,
- parameters = descriptor.valueParameters.mapIndexed { index, desc ->
- parameter(
- index, desc,
- DRIWithPlatformInfo(
- dri,
- parent.expected.filterTagWrappers(listOf(Param::class)),
- parent.actual.filterTagWrappers(listOf(Param::class))
- )
- )
- },
- expected = parent.expected ?: descriptor.takeIf { it.isExpect }?.resolveDescriptorData(),
- actual = parent.actual,
- visibility = mapOf(platformData to descriptor.visibility)
- )
- }
-
- override fun visitReceiverParameterDescriptor(
- descriptor: ReceiverParameterDescriptor,
- parent: DRIWithPlatformInfo
- ) = Parameter(
- dri = parent.dri.copy(target = 0),
- name = null,
- type = KotlinTypeWrapper(descriptor.type),
- expected = parent.expected,
- actual = parent.actual
- )
-
- open fun visitPropertyAccessorDescriptor(
- descriptor: PropertyAccessorDescriptor,
- propertyDescriptor: PropertyDescriptor,
- parent: DRI
- ): Function {
- val dri = parent.copy(callable = Callable.from(descriptor))
- val isGetter = descriptor is PropertyGetterDescriptor
-
- fun PropertyDescriptor.asParameter(parent: DRI) =
- Parameter(
- parent.copy(target = 1),
- this.name.asString(),
- KotlinTypeWrapper(this.type),
- descriptor.takeIf { it.isExpect }?.resolveDescriptorData(),
- listOfNotNull(descriptor.takeUnless { it.isExpect }?.resolveDescriptorData())
- )
-
- val name = run {
- val modifier = if (isGetter) "get" else "set"
- val rawName = propertyDescriptor.name.asString()
- "$modifier${rawName[0].toUpperCase()}${rawName.drop(1)}"
- }
-
- descriptor.visibility
- val parameters =
- if (isGetter) {
- emptyList()
- } else {
- listOf(propertyDescriptor.asParameter(dri))
- }
-
- return Function(
- dri,
- name,
- descriptor.returnType?.let { KotlinTypeWrapper(it) },
- false,
- null,
- parameters,
- descriptor.takeIf { it.isExpect }?.resolveDescriptorData(),
- listOfNotNull(descriptor.takeUnless { it.isExpect }?.resolveDescriptorData()),
- visibility = mapOf(platformData to descriptor.visibility)
- )
- }
-
- private fun parameter(index: Int, descriptor: ValueParameterDescriptor, parent: DRIWithPlatformInfo) =
- Parameter(
- dri = parent.dri.copy(target = index + 1),
- name = descriptor.name.asString(),
- type = KotlinTypeWrapper(descriptor.type),
- expected = parent.expected,
- actual = parent.actual
- )
-
- private fun MemberScope.functions(parent: DRIWithPlatformInfo): List<Function> =
- getContributedDescriptors(DescriptorKindFilter.FUNCTIONS) { true }
- .filterIsInstance<FunctionDescriptor>()
- .map { visitFunctionDescriptor(it, parent) }
-
- private fun MemberScope.properties(parent: DRIWithPlatformInfo): List<Property> =
- getContributedDescriptors(DescriptorKindFilter.VALUES) { true }
- .filterIsInstance<PropertyDescriptor>()
- .map { visitPropertyDescriptor(it, parent) }
-
- private fun MemberScope.classlikes(parent: DRIWithPlatformInfo): List<Classlike> =
- getContributedDescriptors(DescriptorKindFilter.CLASSIFIERS) { true }
- .filterIsInstance<ClassDescriptor>()
- .map { visitClassDescriptor(it, parent) }
-
- private fun DeclarationDescriptor.resolveDescriptorData(): PlatformInfo {
- val doc = findKDoc()
- val parser: MarkdownParser = MarkdownParser(resolutionFacade, this)
- val docHeader = parser.parseFromKDocTag(doc)
-
- return BasePlatformInfo(docHeader, listOf(platformData))
- }
-
- private fun ClassDescriptor.resolveClassDescriptionData(): ClassPlatformInfo {
- return ClassPlatformInfo(resolveDescriptorData(),
- (getSuperInterfaces() + getAllSuperclassesWithoutAny()).map { DRI.from(it) })
- }
-
- private fun PlatformInfo?.filterTagWrappers(
- types: List<KClass<out TagWrapper>>,
- name: String? = null
- ): PlatformInfo? {
- if (this == null)
- return null
- return BasePlatformInfo(
- DocumentationNode(
- this.documentationNode.children.filter { it::class in types && (it as? NamedTagWrapper)?.name == name }
- ),
- this.platformData
- )
- }
-
- private fun List<PlatformInfo>.filterTagWrappers(
- types: List<KClass<out TagWrapper>>,
- name: String? = null
- ): List<PlatformInfo> =
- this.map { it.filterTagWrappers(types, name)!! }
-}
-
-data class XMLMega(val key: String, val dri: DRI) : Extra
-
-enum class KotlinClassKindTypes : ClassKind {
- CLASS,
- INTERFACE,
- ENUM_CLASS,
- ENUM_ENTRY,
- ANNOTATION_CLASS,
- OBJECT;
-}
-
-class KotlinTypeWrapper(private val kotlinType: KotlinType) : TypeWrapper {
- private val declarationDescriptor = kotlinType.constructor.declarationDescriptor
- private val fqNameSafe = declarationDescriptor?.fqNameSafe
- override val constructorFqName = fqNameSafe?.asString()
- override val constructorNamePathSegments: List<String> =
- fqNameSafe?.pathSegments()?.map { it.asString() } ?: emptyList()
- override val arguments: List<KotlinTypeWrapper> by lazy {
- kotlinType.arguments.map {
- KotlinTypeWrapper(
- it.type
- )
- }
- }
- override val dri: DRI? by lazy { declarationDescriptor?.let { DRI.from(it) } }
-} \ No newline at end of file
diff --git a/core/src/main/kotlin/transformers/descriptors/DescriptorToDocumentationTranslator.kt b/core/src/main/kotlin/transformers/descriptors/DescriptorToDocumentationTranslator.kt
index 61d636d6..5074833e 100644
--- a/core/src/main/kotlin/transformers/descriptors/DescriptorToDocumentationTranslator.kt
+++ b/core/src/main/kotlin/transformers/descriptors/DescriptorToDocumentationTranslator.kt
@@ -9,7 +9,6 @@ interface DescriptorToDocumentationTranslator {
fun invoke(
moduleName: String,
packageFragments: Iterable<PackageFragmentDescriptor>,
- platformData: PlatformData,
- context: DokkaContext
+ platformData: PlatformData
): Module
} \ No newline at end of file
diff --git a/core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt b/core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt
index 144f319f..055df0b2 100644
--- a/core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt
+++ b/core/src/main/kotlin/transformers/psi/DefaultPsiToDocumentationTranslator.kt
@@ -141,75 +141,3 @@ object DefaultPsiToDocumentationTranslator : PsiToDocumentationTranslator {
}
}
}
-
-enum class JavaClassKindTypes : ClassKind {
- CLASS,
- INTERFACE,
- ENUM_CLASS,
- ENUM_ENTRY,
- ANNOTATION_CLASS;
-}
-
-class JavaTypeWrapper : TypeWrapper {
-
- override val constructorFqName: String?
- override val constructorNamePathSegments: List<String>
- override val arguments: List<TypeWrapper>
- override val dri: DRI?
- val isPrimitive: Boolean
-
- constructor(
- constructorNamePathSegments: List<String>,
- arguments: List<TypeWrapper>,
- dri: DRI?,
- isPrimitiveType: Boolean
- ) {
- this.constructorFqName = constructorNamePathSegments.joinToString(".")
- this.constructorNamePathSegments = constructorNamePathSegments
- this.arguments = arguments
- this.dri = dri
- this.isPrimitive = isPrimitiveType
- }
-
- constructor(type: PsiType) {
- if (type is PsiClassReferenceType) {
- val resolved = type.resolve()
- constructorFqName = resolved?.qualifiedName
- constructorNamePathSegments = resolved?.qualifiedName?.split('.') ?: emptyList()
- arguments = type.parameters.mapNotNull {
- if (it is PsiClassReferenceType) JavaTypeWrapper(it) else null
- }
- dri = fromPsi(type)
- this.isPrimitive = false
- } else if (type is PsiEllipsisType) {
- constructorFqName = type.canonicalText
- constructorNamePathSegments = listOf(type.canonicalText) // TODO
- arguments = emptyList()
- dri = DRI("java.lang", "Object") // TODO
- this.isPrimitive = false
- } else if (type is PsiArrayType) {
- constructorFqName = type.canonicalText
- constructorNamePathSegments = listOf(type.canonicalText)
- arguments = emptyList()
- dri = (type as? PsiClassReferenceType)?.let { fromPsi(it) } // TODO
- this.isPrimitive = false
- } else {
- type as PsiPrimitiveType
- constructorFqName = type.name
- constructorNamePathSegments = type.name.split('.')
- arguments = emptyList()
- dri = null
- this.isPrimitive = true
- }
- }
-
- private fun fromPsi(type: PsiClassReferenceType): DRI {
- val className = type.className
- val pkg = type.canonicalText.removeSuffix(className).removeSuffix(".")
- return DRI(packageName = pkg, classNames = className)
- }
-
- override fun toString(): String {
- return constructorFqName.orEmpty()
- }
-} \ No newline at end of file