From 5f36bdd75e32743f54193aa8eff8cd5185b3cf67 Mon Sep 17 00:00:00 2001 From: Paweł Marks Date: Thu, 31 Oct 2019 22:58:42 +0100 Subject: Adds transformation from descriptors to documentation graph --- core/src/main/kotlin/Model/DocumentationNode.kt | 59 +++++++++++-------------- 1 file changed, 27 insertions(+), 32 deletions(-) (limited to 'core/src/main/kotlin/Model') diff --git a/core/src/main/kotlin/Model/DocumentationNode.kt b/core/src/main/kotlin/Model/DocumentationNode.kt index 8da099ca..1871e21c 100644 --- a/core/src/main/kotlin/Model/DocumentationNode.kt +++ b/core/src/main/kotlin/Model/DocumentationNode.kt @@ -1,72 +1,73 @@ package org.jetbrains.dokka.Model -import org.jetbrains.dokka.links.Callable import org.jetbrains.dokka.links.DRI -import org.jetbrains.dokka.links.withClass import org.jetbrains.kotlin.descriptors.* -class Module(val packages: List) : DocumentationNode(DRI.topLevel, DRI.topLevel) { +class Module(val packages: List) : DocumentationNode() { + override val dri: DRI + get() = DRI.topLevel + override val children: List get() = packages } class Package( - val name: String, + override val dri: DRI, override val functions: List, override val properties: List, override val classes: List -) : ScopeNode(DRI(packageName = name), DRI.topLevel) +) : ScopeNode() { + val name = dri.packageName.orEmpty() +} class Class( + override val dri: DRI, val name: String, override val functions: List, override val properties: List, override val classes: List, - override val descriptor: ClassDescriptor, - parent: DRI -) : ScopeNode(parent.withClass(name), parent) + override val descriptor: ClassDescriptor +) : ScopeNode() class Function( + override val dri: DRI, val name: String, override val receiver: Parameter?, val parameters: List, - override val descriptor: FunctionDescriptor, - parent: DRI -) : CallableNode(parent, descriptor) { + override val descriptor: FunctionDescriptor +) : CallableNode() { override val children: List get() = listOfNotNull(receiver) + parameters } class Property( + override val dri: DRI, val name: String, override val receiver: Parameter?, - override val descriptor: PropertyDescriptor, - parent: DRI -) : CallableNode(parent, descriptor) { + override val descriptor: PropertyDescriptor +) : CallableNode() { override val children: List get() = listOfNotNull(receiver) } class Parameter( - val name: String, - override val descriptor: ParameterDescriptor, - parent: DRI, - index: Int -) : DocumentationNode(parent, parent.copy(target = index)) { + override val dri: DRI, + val name: String?, + override val descriptor: ParameterDescriptor +) : DocumentationNode() { override val children: List> get() = emptyList() } -abstract class DocumentationNode( - val dri: DRI, - val parent: DRI -) { +abstract class DocumentationNode { open val descriptor: T? = null + abstract val dri: DRI + abstract val children: List> override fun toString(): String { - return "${javaClass.name}($dri)" + return "${javaClass.simpleName}($dri)" } override fun equals(other: Any?) = other is DocumentationNode<*> && this.dri == other.dri @@ -74,10 +75,7 @@ abstract class DocumentationNode( override fun hashCode() = dri.hashCode() } -abstract class ScopeNode( - dri: DRI, - parent: DRI -) : DocumentationNode(dri, parent) { +abstract class ScopeNode : DocumentationNode() { abstract val functions: List abstract val properties: List abstract val classes: List @@ -86,9 +84,6 @@ abstract class ScopeNode( get() = functions + properties + classes } -abstract class CallableNode( - parent: DRI, - descriptor: CallableDescriptor -) : DocumentationNode(parent.copy(callable = Callable.from(descriptor)), parent) { +abstract class CallableNode : DocumentationNode() { abstract val receiver: Parameter? } \ No newline at end of file -- cgit