From 372ab94571e1ad5885982ea83d4b55286f1d6c23 Mon Sep 17 00:00:00 2001 From: Ilya Ryzhenkov Date: Sat, 12 Jul 2014 16:05:59 +0400 Subject: Implement KotlinSignatureGenerator to render nodes back into text in Kotlin syntax. --- src/Model/DocumentationModule.kt | 2 +- src/Model/DocumentationNode.kt | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'src/Model') diff --git a/src/Model/DocumentationModule.kt b/src/Model/DocumentationModule.kt index 25cbb600..1f30268e 100644 --- a/src/Model/DocumentationModule.kt +++ b/src/Model/DocumentationModule.kt @@ -4,7 +4,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext import org.jetbrains.jet.lang.psi.JetFile import org.jetbrains.jet.lang.descriptors.* -public class DocumentationModule(val module: ModuleDescriptor) : DocumentationNode(module, "model", DocumentationContent.Empty, DocumentationNode.Kind.Module) { +public class DocumentationModule(val module: ModuleDescriptor) : DocumentationNode(module, "module", DocumentationContent.Empty, DocumentationNode.Kind.Module) { fun merge(other: DocumentationModule): DocumentationModule { val model = DocumentationModule(module) model.addAllReferencesFrom(other) diff --git a/src/Model/DocumentationNode.kt b/src/Model/DocumentationNode.kt index f095e8b0..da0f27e5 100644 --- a/src/Model/DocumentationNode.kt +++ b/src/Model/DocumentationNode.kt @@ -1,6 +1,7 @@ package org.jetbrains.dokka import org.jetbrains.jet.lang.descriptors.* +import java.util.LinkedHashSet public open class DocumentationNode(val descriptor: DeclarationDescriptor, @@ -8,7 +9,7 @@ public open class DocumentationNode(val descriptor: DeclarationDescriptor, val doc: DocumentationContent, val kind: DocumentationNode.Kind) { - private val references = arrayListOf() + private val references = LinkedHashSet() public val owner: DocumentationNode? get() = references(DocumentationReference.Kind.Owner).firstOrNull()?.to // TODO: should be singleOrNull, but bugz! @@ -28,8 +29,16 @@ public open class DocumentationNode(val descriptor: DeclarationDescriptor, references.addAll(other.references) } + public fun details(kind: DocumentationNode.Kind): List = details.filter { it.kind == kind } + public fun members(kind: DocumentationNode.Kind): List = members.filter { it.kind == kind } + public fun links(kind: DocumentationNode.Kind): List = links.filter { it.kind == kind } + + public fun detail(kind: DocumentationNode.Kind): DocumentationNode = details.filter { it.kind == kind }.single() + public fun member(kind: DocumentationNode.Kind): DocumentationNode = members.filter { it.kind == kind }.single() + public fun link(kind: DocumentationNode.Kind): DocumentationNode = links.filter { it.kind == kind }.single() + public fun references(kind: DocumentationReference.Kind): List = references.filter { it.kind == kind } - public fun allReferences(): List = references + public fun allReferences(): Set = references public override fun toString(): String { return "$kind:$name" -- cgit