aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
diff options
context:
space:
mode:
authorSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2018-01-07 01:49:34 +0300
committerSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2018-01-07 01:49:34 +0300
commita06d6a8451967120ddf369ada724c837430507f4 (patch)
tree22fc8c28cb30356303af1ff817cea3a1ca7d53a2 /core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
parent66ca7710e79197973d0d1d28031a168ed8e474c5 (diff)
downloaddokka-a06d6a8451967120ddf369ada724c837430507f4.tar.gz
Show type parameters substitution in class hierarchy
Diffstat (limited to 'core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt')
-rw-r--r--core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt40
1 files changed, 38 insertions, 2 deletions
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
index 02d0b3a79..d92eb2c82 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
@@ -190,9 +190,45 @@ class JavaLayoutHtmlFormatOutputBuilder(
}
)
+ fun FlowContent.qualifiedTypeReference(node: DocumentationNode) {
+ if (node.kind in classLike) {
+ a(href = uriProvider.linkTo(node, uri)) {
+ +node.qualifiedName()
+ }
+ return
+ }
+
+ val targetLink = node.links.single()
+
+ if (targetLink.kind == NodeKind.TypeParameter) {
+ +node.name
+ return
+ }
+
+ val href = if (targetLink.kind == NodeKind.ExternalLink)
+ targetLink.name
+ else
+ uriProvider.linkTo(targetLink, uri)
+
+ a(href = href) {
+ +node.qualifiedNameFromType()
+ }
+ val typeParameters = node.details(NodeKind.Type)
+ if (typeParameters.isNotEmpty()) {
+ +"<"
+ typeParameters.forEach {
+ if (it != typeParameters.first()) {
+ +", "
+ }
+ qualifiedTypeReference(it)
+ }
+ +">"
+ }
+ }
+
fun FlowContent.classHierarchy(node: DocumentationNode) {
- val superclasses = generateSequence(node) { it.superclass }.toList().asReversed()
+ val superclasses = generateSequence(node.superclass) { it.links.single().superclass }.toList().asReversed() + node
table {
superclasses.forEach {
tr {
@@ -202,7 +238,7 @@ class JavaLayoutHtmlFormatOutputBuilder(
}
}
td {
- a(href = uriProvider.linkTo(it, uri)) { +it.qualifiedName() }
+ qualifiedTypeReference(it)
}
}
}