diff options
author | Dmitry Jemerov <yole@jetbrains.com> | 2015-02-25 19:03:51 +0100 |
---|---|---|
committer | Dmitry Jemerov <yole@jetbrains.com> | 2015-02-25 19:03:51 +0100 |
commit | 184a24c93e0939c5a9ceb10cf3c3992f11165219 (patch) | |
tree | f4334b51d9f2bc021d5af55aca3e0be9e8ceec37 /src/Java/JavaDocumentationBuilder.kt | |
parent | 29e48dcbf30ac16013d9c8951e4fa088e8d9b016 (diff) | |
download | dokka-184a24c93e0939c5a9ceb10cf3c3992f11165219.tar.gz dokka-184a24c93e0939c5a9ceb10cf3c3992f11165219.tar.bz2 dokka-184a24c93e0939c5a9ceb10cf3c3992f11165219.zip |
resolve references through single map from signature to DocumentationNode (enables cross-language references)
Diffstat (limited to 'src/Java/JavaDocumentationBuilder.kt')
-rw-r--r-- | src/Java/JavaDocumentationBuilder.kt | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/Java/JavaDocumentationBuilder.kt b/src/Java/JavaDocumentationBuilder.kt index 55f9017b..a7016ae6 100644 --- a/src/Java/JavaDocumentationBuilder.kt +++ b/src/Java/JavaDocumentationBuilder.kt @@ -8,9 +8,7 @@ import com.intellij.psi.javadoc.PsiInlineDocTag import org.jetbrains.dokka.DocumentationNode.Kind public class JavaDocumentationBuilder(private val options: DocumentationOptions, - private val pendingReferences: MutableList<PendingDocumentationReference>) { - private val signatureToNode = hashMapOf<String, DocumentationNode>() - + private val refGraph: NodeReferenceGraph) { fun appendFile(file: PsiJavaFile, module: DocumentationModule) { val packageNode = module.findOrCreatePackageNode(file.getPackageName()) packageNode.appendChildren(file.getClasses()) { build() } @@ -87,7 +85,7 @@ public class JavaDocumentationBuilder(private val options: DocumentationOptions, if (target != null) { val signature = getSignature(target) if (signature != null) { - return ContentNodeLazyLink(valueElement!!.getText(), {() -> signatureToNode[signature]}) + return ContentNodeLazyLink(valueElement!!.getText(), {() -> refGraph.lookup(signature)}) } } return null @@ -101,26 +99,23 @@ public class JavaDocumentationBuilder(private val options: DocumentationOptions, } fun register(element: PsiElement, node: DocumentationNode) { - signatureToNode[getSignature(element)] = node + val signature = getSignature(element) + if (signature != null) { + refGraph.register(signature, node) + } } fun link(node: DocumentationNode, element: PsiElement?) { val qualifiedName = getSignature(element) if (qualifiedName != null) { - pendingReferences.add(PendingDocumentationReference( - {() -> node}, - {() -> signatureToNode[qualifiedName]}, - DocumentationReference.Kind.Link)) + refGraph.link(node, qualifiedName, DocumentationReference.Kind.Link) } } fun link(element: PsiElement?, node: DocumentationNode, kind: DocumentationReference.Kind) { val qualifiedName = getSignature(element) if (qualifiedName != null) { - pendingReferences.add(PendingDocumentationReference( - {() -> signatureToNode[qualifiedName]}, - {() -> node}, - kind)) + refGraph.link(qualifiedName, node, kind) } } |