aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/Model
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/Model')
-rw-r--r--core/src/main/kotlin/Model/DocumentationNode.kt2
-rw-r--r--core/src/main/kotlin/Model/transformers/DocumentationNodeTransformer.kt8
-rw-r--r--core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt90
3 files changed, 1 insertions, 99 deletions
diff --git a/core/src/main/kotlin/Model/DocumentationNode.kt b/core/src/main/kotlin/Model/DocumentationNode.kt
index 0adb37b5..b1d4be55 100644
--- a/core/src/main/kotlin/Model/DocumentationNode.kt
+++ b/core/src/main/kotlin/Model/DocumentationNode.kt
@@ -1,6 +1,6 @@
package org.jetbrains.dokka.Model
-import org.jetbrains.dokka.KotlinTypeWrapper
+import org.jetbrains.dokka.transformers.descriptors.KotlinTypeWrapper
import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.pages.PlatformData
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag
diff --git a/core/src/main/kotlin/Model/transformers/DocumentationNodeTransformer.kt b/core/src/main/kotlin/Model/transformers/DocumentationNodeTransformer.kt
deleted file mode 100644
index 318d20b3..00000000
--- a/core/src/main/kotlin/Model/transformers/DocumentationNodeTransformer.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.jetbrains.dokka.Model.transformers
-
-import org.jetbrains.dokka.Model.Module
-
-interface DocumentationNodeTransformer {
- operator fun invoke(original: Module): Module
- operator fun invoke(modules: Collection<Module>): Module
-} \ No newline at end of file
diff --git a/core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt b/core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt
deleted file mode 100644
index ae4f8d99..00000000
--- a/core/src/main/kotlin/Model/transformers/DocumentationNodesMerger.kt
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.jetbrains.dokka.Model.transformers
-
-import org.jetbrains.dokka.Model.*
-import org.jetbrains.dokka.Model.Function
-
-internal object DocumentationNodesMerger : DocumentationNodeTransformer {
- override fun invoke(original: Module) = Module(
- original.packages.map { mergePackageContent(it) }
- )
- override fun invoke(modules: Collection<Module>): Module =
- Module(merge(modules.flatMap { it.packages }, Package::mergeWith))
-}
-
-private fun mergePackageContent(original: Package) = Package(
- original.dri,
- merge(original.functions, Function::mergeWith),
- merge(original.properties, Property::mergeWith),
- merge(original.classes, Class::mergeWith)
-)
-
-private fun <T: DocumentationNode> merge(elements: List<T>, reducer: (T, T) -> T): List<T> =
- elements.groupingBy { it.dri }
- .reduce { _, left, right -> reducer(left, right)}
- .values.toList()
-
-fun PlatformInfo.mergeWith(other: PlatformInfo?) = BasePlatformInfo(
- docTag,
- links,
- (platformData + (other?.platformData ?: emptyList())).distinct()
-)
-
-fun ClassPlatformInfo.mergeWith(other: ClassPlatformInfo?) = ClassPlatformInfo(
- info.mergeWith(other?.info),
- (inherited + (other?.inherited ?: emptyList())).distinct()
-)
-
-fun List<ClassPlatformInfo>.mergeClassPlatformInfo() : List<ClassPlatformInfo> =
- groupingBy { it.docTag.toString() + it.links + it.inherited}.reduce {
- _, left, right -> left.mergeWith(right)
- }.values.toList()
-
-fun List<PlatformInfo>.merge() : List<PlatformInfo> =
- groupingBy { it.docTag.toString() + it.links }.reduce {
- _, left, right -> left.mergeWith(right)
- }.values.toList()
-
-fun Function.mergeWith(other: Function) = Function(
- dri,
- name,
- returnType,
- isConstructor,
- if (receiver != null && other.receiver != null) receiver.mergeWith(other.receiver) else null,
- merge(parameters + other.parameters, Parameter::mergeWith),
- expected?.mergeWith(other.expected),
- (actual + other.actual).merge()
-)
-
-fun Property.mergeWith(other: Property) = Property(
- dri,
- name,
- if (receiver != null && other.receiver != null) receiver.mergeWith(other.receiver) else null,
- expected?.mergeWith(other.expected),
- (actual + other.actual).merge()
-)
-
-fun Class.mergeWith(other: Class) = Class(
- dri,
- name,
- kind,
- merge(constructors + other.constructors, Function::mergeWith),
- merge(functions + other.functions, Function::mergeWith),
- merge(properties + other.properties, Property::mergeWith),
- merge(classes + other.classes, Class::mergeWith),
- expected?.mergeWith(other.expected),
- (actual + other.actual).mergeClassPlatformInfo()
-)
-
-fun Parameter.mergeWith(other: Parameter) = Parameter(
- dri,
- name,
- type,
- (actual + other.actual).merge()
-)
-
-fun Package.mergeWith(other: Package) = Package(
- dri,
- merge(functions + other.functions, Function::mergeWith),
- merge(properties + other.properties, Property::mergeWith),
- merge(classes + other.classes, Class::mergeWith)
-) \ No newline at end of file