aboutsummaryrefslogtreecommitdiff
path: root/src/Java/JavaDocumentationBuilder.kt
diff options
context:
space:
mode:
authorDmitry Jemerov <yole@jetbrains.com>2015-02-25 19:03:51 +0100
committerDmitry Jemerov <yole@jetbrains.com>2015-02-25 19:03:51 +0100
commit184a24c93e0939c5a9ceb10cf3c3992f11165219 (patch)
treef4334b51d9f2bc021d5af55aca3e0be9e8ceec37 /src/Java/JavaDocumentationBuilder.kt
parent29e48dcbf30ac16013d9c8951e4fa088e8d9b016 (diff)
downloaddokka-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.kt21
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)
}
}